From 45344dca2b6fc6afcbadc83dd3c87b57fa775524 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Mon, 11 Mar 2024 15:47:52 +0100 Subject: [PATCH] font_cache: Handle filtering `@font-face` rules in Servo (#31601) Instead of letting Stylo filter `@font-face` rules, handle this filtering in Servo. It doesn't make sense that Stylo knows about what fonts Servo supports. This also cleans up a bit the way that this is handled, giving an entire stylesheet of rules to the font cache to process instead of letting each layout thread walk the rules. This brings more of the font-related code into the FontCacheThread itself. This is the first step toward adding WOFF2 support and fixing various web font related bugs. --- Cargo.lock | 26 ++--- components/gfx/font_cache_thread.rs | 103 +++++++++++++++--- components/gfx/tests/font_context.rs | 2 + components/layout_thread/lib.rs | 56 ++-------- components/layout_thread_2020/lib.rs | 55 ++-------- ...horthand-serialization-prevention.html.ini | 36 ++++++ ...ont-shorthand-subproperties-reset.html.ini | 3 +- .../css/css-fonts/inheritance.html.ini | 6 - .../font-language-override-computed.html.ini | 15 --- .../font-language-override-valid.html.ini | 27 ----- ...horthand-serialization-prevention.html.ini | 21 ++++ ...ont-shorthand-subproperties-reset.html.ini | 3 +- .../meta/css/css-fonts/inheritance.html.ini | 6 - .../font-language-override-computed.html.ini | 15 --- .../font-language-override-valid.html.ini | 27 ----- 15 files changed, 182 insertions(+), 219 deletions(-) delete mode 100644 tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-valid.html.ini delete mode 100644 tests/wpt/meta/css/css-fonts/parsing/font-language-override-computed.html.ini delete mode 100644 tests/wpt/meta/css/css-fonts/parsing/font-language-override-valid.html.ini diff --git a/Cargo.lock b/Cargo.lock index c97c5927929..9dd4bbe9c7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1208,7 +1208,7 @@ dependencies = [ [[package]] name = "derive_common" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "darling", "proc-macro2", @@ -3463,7 +3463,7 @@ dependencies = [ [[package]] name = "malloc_size_of" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "accountable-refcell", "app_units", @@ -5075,7 +5075,7 @@ dependencies = [ [[package]] name = "selectors" version = "0.24.0" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "bitflags 1.3.2", "cssparser", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "servo_arc" version = "0.2.0" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "nodrop", "serde", @@ -5373,7 +5373,7 @@ dependencies = [ [[package]] name = "servo_atoms" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "string_cache", "string_cache_codegen", @@ -5579,7 +5579,7 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "size_of_test" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "static_assertions", ] @@ -5705,7 +5705,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "static_prefs" version = "0.1.0" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" [[package]] name = "str-buf" @@ -5748,7 +5748,7 @@ dependencies = [ [[package]] name = "style" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "app_units", "arrayvec", @@ -5806,7 +5806,7 @@ dependencies = [ [[package]] name = "style_config" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "lazy_static", ] @@ -5814,7 +5814,7 @@ dependencies = [ [[package]] name = "style_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "darling", "derive_common", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "style_traits" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "app_units", "bitflags 1.3.2", @@ -6188,7 +6188,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "to_shmem" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "cssparser", "servo_arc", @@ -6201,7 +6201,7 @@ dependencies = [ [[package]] name = "to_shmem_derive" version = "0.0.1" -source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6d01b5972aa3d00acbbe2a9cac98c59934b659e6" +source = "git+https://github.com/servo/stylo.git?branch=2023-07-23#6614be88ec2b773e397767eb0d0554dd1145e81e" dependencies = [ "darling", "derive_common", diff --git a/components/gfx/font_cache_thread.rs b/components/gfx/font_cache_thread.rs index 5b954a33346..1ea34f523a7 100644 --- a/components/gfx/font_cache_thread.rs +++ b/components/gfx/font_cache_thread.rs @@ -17,8 +17,10 @@ use net_traits::{fetch_async, CoreResourceThread, FetchResponseMsg}; use serde::{Deserialize, Serialize}; use servo_atoms::Atom; use servo_url::ServoUrl; -use style::font_face::{EffectiveSources, Source}; -use style::values::computed::font::FamilyName; +use style::font_face::{FontFaceSourceFormat, FontFaceSourceFormatKeyword, Source}; +use style::media_queries::Device; +use style::shared_lock::SharedRwLockReadGuard; +use style::stylesheets::{Stylesheet, StylesheetInDocument}; use webrender_api::{FontInstanceKey, FontKey}; use crate::font::{FontFamilyDescriptor, FontFamilyName, FontSearchScope}; @@ -130,7 +132,7 @@ pub enum Command { IpcSender, ), GetFontInstance(FontKey, Au, IpcSender), - AddWebFont(LowercaseString, EffectiveSources, IpcSender<()>), + AddWebFont(LowercaseString, Vec, IpcSender<()>), AddDownloadedWebFont(LowercaseString, ServoUrl, Vec, IpcSender<()>), Exit(IpcSender<()>), Ping, @@ -248,10 +250,10 @@ impl FontCache { fn handle_add_web_font( &mut self, family_name: LowercaseString, - mut sources: EffectiveSources, + mut sources: Vec, sender: IpcSender<()>, ) { - let src = if let Some(src) = sources.next() { + let src = if let Some(src) = sources.pop() { src } else { sender.send(()).unwrap(); @@ -503,19 +505,58 @@ impl FontCacheThread { FontCacheThread { chan } } - pub fn add_web_font( + pub fn add_all_web_fonts_from_stylesheet( &self, - family: FamilyName, - sources: EffectiveSources, - sender: IpcSender<()>, - ) { - self.chan - .send(Command::AddWebFont( - LowercaseString::new(&family.name), - sources, - sender, - )) - .unwrap(); + stylesheet: &Stylesheet, + guard: &SharedRwLockReadGuard, + device: &Device, + font_cache_sender: &IpcSender<()>, + synchronous: bool, + ) -> usize { + let (sender, receiver) = if synchronous { + let (sender, receiver) = ipc::channel().unwrap(); + (Some(sender), Some(receiver)) + } else { + (None, None) + }; + + let mut number_loading = 0; + stylesheet.effective_font_face_rules(&device, guard, |rule| { + let font_face = match rule.font_face() { + Some(font_face) => font_face, + None => return, + }; + + let sources: Vec = font_face + .sources() + .0 + .iter() + .rev() + .filter(is_supported_web_font_source) + .cloned() + .collect(); + if sources.is_empty() { + return; + } + + let sender = sender.as_ref().unwrap_or(font_cache_sender).clone(); + self.chan + .send(Command::AddWebFont( + LowercaseString::new(&font_face.family().name), + sources, + sender, + )) + .unwrap(); + + // Either increment the count of loading web fonts, or wait for a synchronous load. + if let Some(ref receiver) = receiver { + receiver.recv().unwrap(); + } else { + number_loading += 1; + } + }); + + number_loading } pub fn exit(&self) { @@ -624,3 +665,31 @@ impl fmt::Display for LowercaseString { self.inner.fmt(f) } } + +fn is_supported_web_font_source(source: &&Source) -> bool { + let url_source = match source { + Source::Url(ref url_source) => url_source, + Source::Local(_) => return true, + }; + let format_hint = match url_source.format_hint { + Some(ref format_hint) => format_hint, + None => return true, + }; + + if matches!( + format_hint, + FontFaceSourceFormat::Keyword( + FontFaceSourceFormatKeyword::Truetype | + FontFaceSourceFormatKeyword::Opentype | + FontFaceSourceFormatKeyword::Woff + ) + ) { + return true; + } + + if let FontFaceSourceFormat::String(string) = format_hint { + return string == "truetype" || string == "opentype" || string == "woff"; + } + + false +} diff --git a/components/gfx/tests/font_context.rs b/components/gfx/tests/font_context.rs index 10a193272ec..972fbca2afe 100644 --- a/components/gfx/tests/font_context.rs +++ b/components/gfx/tests/font_context.rs @@ -24,6 +24,7 @@ use style::values::computed::font::{ FamilyName, FontFamily, FontFamilyList, FontFamilyNameSyntax, FontSize, FontStretch, FontStyle, FontWeight, SingleFontFamily, }; +use style::values::computed::FontLanguageOverride; use webrender_api::{FontInstanceKey, FontKey, IdNamespace}; struct TestFontSource { @@ -100,6 +101,7 @@ fn style() -> FontStyleStruct { font_size: FontSize::medium(), font_stretch: FontStretch::hundred(), hash: 0, + font_language_override: FontLanguageOverride::normal(), }; style.compute_font_hash(); style diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index 74be9d0cfd9..ebdb06f04ae 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -295,43 +295,6 @@ impl<'a, 'b: 'a> RwData<'a, 'b> { } } -fn add_font_face_rules( - stylesheet: &Stylesheet, - guard: &SharedRwLockReadGuard, - device: &Device, - font_cache_thread: &FontCacheThread, - font_cache_sender: &IpcSender<()>, - outstanding_web_fonts_counter: &Arc, - load_webfonts_synchronously: bool, -) { - if load_webfonts_synchronously { - let (sender, receiver) = ipc::channel().unwrap(); - stylesheet.effective_font_face_rules(&device, guard, |rule| { - if let Some(font_face) = rule.font_face() { - let effective_sources = font_face.effective_sources(); - font_cache_thread.add_web_font( - font_face.family().clone(), - effective_sources, - sender.clone(), - ); - receiver.recv().unwrap(); - } - }) - } else { - stylesheet.effective_font_face_rules(&device, guard, |rule| { - if let Some(font_face) = rule.font_face() { - let effective_sources = font_face.effective_sources(); - outstanding_web_fonts_counter.fetch_add(1, Ordering::SeqCst); - font_cache_thread.add_web_font( - font_face.family().clone(), - effective_sources, - (*font_cache_sender).clone(), - ); - } - }) - } -} - impl Layout for LayoutThread { fn process(&mut self, msg: script_layout_interface::message::Msg) { self.handle_request(Request::FromScript(msg)); @@ -644,15 +607,16 @@ impl LayoutThread { // Find all font-face rules and notify the font cache of them. // GWTODO: Need to handle unloading web fonts. if stylesheet.is_effective_for_device(self.stylist.device(), &guard) { - add_font_face_rules( - &*stylesheet, - &guard, - self.stylist.device(), - &self.font_cache_thread, - &self.font_cache_sender, - &self.outstanding_web_fonts, - self.debug.load_webfonts_synchronously, - ); + let newly_loading_font_count = + self.font_cache_thread.add_all_web_fonts_from_stylesheet( + &*stylesheet, + &guard, + self.stylist.device(), + &self.font_cache_sender, + self.debug.load_webfonts_synchronously, + ); + self.outstanding_web_fonts + .fetch_add(newly_loading_font_count, Ordering::SeqCst); } } diff --git a/components/layout_thread_2020/lib.rs b/components/layout_thread_2020/lib.rs index f3dd538adda..5ab2ca653e3 100644 --- a/components/layout_thread_2020/lib.rs +++ b/components/layout_thread_2020/lib.rs @@ -273,42 +273,6 @@ impl<'a, 'b: 'a> RwData<'a, 'b> { } } -fn add_font_face_rules( - stylesheet: &Stylesheet, - guard: &SharedRwLockReadGuard, - device: &Device, - font_cache_thread: &FontCacheThread, - font_cache_sender: &IpcSender<()>, - outstanding_web_fonts_counter: &Arc, - load_webfonts_synchronously: bool, -) { - if load_webfonts_synchronously { - let (sender, receiver) = ipc::channel().unwrap(); - stylesheet.effective_font_face_rules(&device, guard, |rule| { - if let Some(font_face) = rule.font_face() { - let effective_sources = font_face.effective_sources(); - font_cache_thread.add_web_font( - font_face.family().clone(), - effective_sources, - sender.clone(), - ); - receiver.recv().unwrap(); - } - }) - } else { - stylesheet.effective_font_face_rules(&device, guard, |rule| { - if let Some(font_face) = rule.font_face() { - let effective_sources = font_face.effective_sources(); - outstanding_web_fonts_counter.fetch_add(1, Ordering::SeqCst); - font_cache_thread.add_web_font( - font_face.family().clone(), - effective_sources, - (*font_cache_sender).clone(), - ); - } - }) - } -} impl Layout for LayoutThread { fn process(&mut self, msg: script_layout_interface::message::Msg) { self.handle_request(Request::FromScript(msg)); @@ -578,15 +542,16 @@ impl LayoutThread { // Find all font-face rules and notify the font cache of them. // GWTODO: Need to handle unloading web fonts. if stylesheet.is_effective_for_device(self.stylist.device(), &guard) { - add_font_face_rules( - &*stylesheet, - &guard, - self.stylist.device(), - &self.font_cache_thread, - &self.font_cache_sender, - &self.outstanding_web_fonts, - self.debug.load_webfonts_synchronously, - ); + let newly_loading_font_count = + self.font_cache_thread.add_all_web_fonts_from_stylesheet( + &*stylesheet, + &guard, + self.stylist.device(), + &self.font_cache_sender, + self.debug.load_webfonts_synchronously, + ); + self.outstanding_web_fonts + .fetch_add(newly_loading_font_count, Ordering::SeqCst); } } diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-serialization-prevention.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-serialization-prevention.html.ini index de8c77a330a..4c4eee915bc 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-serialization-prevention.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-serialization-prevention.html.ini @@ -67,3 +67,39 @@ [Setting font-stretch to normal should not prevent the font shorthand from serializing in computed style] expected: FAIL + + [Setting font-language-override to initial should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to initial should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to inherit should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to inherit should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to unset should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to unset should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to revert should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to revert should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to revert-layer should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to revert-layer should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to normal should not prevent the font shorthand from serializing in computed style] + expected: FAIL + + [Setting font-language-override to "SRB" should prevent the font shorthand from serializing in specified style] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-subproperties-reset.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-subproperties-reset.html.ini index 94c6da92bc6..5f677a7fdd1 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-subproperties-reset.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-shorthand-subproperties-reset.html.ini @@ -1,2 +1,3 @@ [font-shorthand-subproperties-reset.html] - expected: TIMEOUT + [Property font-language-override should be reset to its initial value.] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/inheritance.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/inheritance.html.ini index 9e4c85353fa..21fa79019b9 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/inheritance.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/inheritance.html.ini @@ -62,9 +62,6 @@ [Property font-variant-alternates has initial value normal] expected: FAIL - [Property font-language-override inherits] - expected: FAIL - [Property font-optical-sizing has initial value auto] expected: FAIL @@ -74,9 +71,6 @@ [Property font-variant-alternates inherits] expected: FAIL - [Property font-language-override has initial value normal] - expected: FAIL - [Property font-synthesis has initial value weight style small-caps] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-computed.html.ini index a5edebe0490..62bcceb8d3b 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-computed.html.ini @@ -5,20 +5,5 @@ [Property font-language-override value 'normal' computes to 'normal'] expected: FAIL - [Property font-language-override value 'normal'] - expected: FAIL - [Property font-language-override value '"ksw"'] expected: FAIL - - [Property font-language-override value '"KSW"'] - expected: FAIL - - [Property font-language-override value '"ENG "'] - expected: FAIL - - [Property font-language-override value '"en "'] - expected: FAIL - - [Property font-language-override value '" en "'] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-valid.html.ini deleted file mode 100644 index 13692267ac0..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-language-override-valid.html.ini +++ /dev/null @@ -1,27 +0,0 @@ -[font-language-override-valid.html] - [e.style['font-language-override'\] = "\\"ksw\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "normal" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"KSW\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"APPH\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"ENG \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"tr\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"en \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\" en \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"1 %\\"" should set the property value] - expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/font-shorthand-serialization-prevention.html.ini b/tests/wpt/meta/css/css-fonts/font-shorthand-serialization-prevention.html.ini index 207963186f5..7912a8d6bee 100644 --- a/tests/wpt/meta/css/css-fonts/font-shorthand-serialization-prevention.html.ini +++ b/tests/wpt/meta/css/css-fonts/font-shorthand-serialization-prevention.html.ini @@ -16,3 +16,24 @@ [Setting font-variant to none should prevent the font shorthand from serializing in computed style] expected: FAIL + + [Setting font-language-override to initial should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to inherit should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to unset should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to revert should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to revert-layer should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to "SRB" should prevent the font shorthand from serializing in specified style] + expected: FAIL + + [Setting font-language-override to "SRB" should prevent the font shorthand from serializing in computed style] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/font-shorthand-subproperties-reset.html.ini b/tests/wpt/meta/css/css-fonts/font-shorthand-subproperties-reset.html.ini index 94c6da92bc6..5f677a7fdd1 100644 --- a/tests/wpt/meta/css/css-fonts/font-shorthand-subproperties-reset.html.ini +++ b/tests/wpt/meta/css/css-fonts/font-shorthand-subproperties-reset.html.ini @@ -1,2 +1,3 @@ [font-shorthand-subproperties-reset.html] - expected: TIMEOUT + [Property font-language-override should be reset to its initial value.] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/inheritance.html.ini b/tests/wpt/meta/css/css-fonts/inheritance.html.ini index 1580e850c13..2af1d7adf7a 100644 --- a/tests/wpt/meta/css/css-fonts/inheritance.html.ini +++ b/tests/wpt/meta/css/css-fonts/inheritance.html.ini @@ -11,12 +11,6 @@ [Property font-kerning inherits] expected: FAIL - [Property font-language-override has initial value normal] - expected: FAIL - - [Property font-language-override inherits] - expected: FAIL - [Property font-optical-sizing has initial value auto] expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-language-override-computed.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-language-override-computed.html.ini deleted file mode 100644 index f74df11360a..00000000000 --- a/tests/wpt/meta/css/css-fonts/parsing/font-language-override-computed.html.ini +++ /dev/null @@ -1,15 +0,0 @@ -[font-language-override-computed.html] - [Property font-language-override value 'normal'] - expected: FAIL - - [Property font-language-override value '"KSW"'] - expected: FAIL - - [Property font-language-override value '"ENG "'] - expected: FAIL - - [Property font-language-override value '"en "'] - expected: FAIL - - [Property font-language-override value '" en "'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-language-override-valid.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-language-override-valid.html.ini deleted file mode 100644 index 64cd8823472..00000000000 --- a/tests/wpt/meta/css/css-fonts/parsing/font-language-override-valid.html.ini +++ /dev/null @@ -1,27 +0,0 @@ -[font-language-override-valid.html] - [e.style['font-language-override'\] = "normal" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"KSW\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"APPH\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"ENG \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"ksw\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"tr\\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"en \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\" en \\"" should set the property value] - expected: FAIL - - [e.style['font-language-override'\] = "\\"1 %\\"" should set the property value] - expected: FAIL