From e43b2354f24f5d72e992aed7fde6a2f9ce05d474 Mon Sep 17 00:00:00 2001 From: ldm0 Date: Tue, 8 Sep 2026 06:44:22 +0800 Subject: [PATCH 1/2] fix(fonts): load and register real FontFace sources --- Cargo.lock | 1 + .../chrome_fontfaceset_events_subset.html | 5 +- .../runtime/document_fonts_events.html | 13 +- ...local_event_target_callback_exception.html | 3 + .../runtime/servo_fontfaceset_load_ready.html | 3 + moli-css-parse/src/font_face.rs | 149 ++++++++ moli-css-parse/src/lib.rs | 5 +- moli-css-parse/src/stylo_stylesheet.rs | 2 +- moli-layout/Cargo.toml | 1 + moli-layout/src/lib.rs | 2 +- moli-layout/src/text.rs | 18 + moli-layout/src/text/font_source.rs | 250 +++++++++++++ .../src/content_security_policy.rs | 3 + moli-renderer-v8/src/context_bootstrap.rs | 1 + .../context_bootstrap/css_fontface_runtime.rs | 2 + .../css_fontface_runtime/events.rs | 91 ++++- .../css_fontface_runtime/font_face.rs | 74 ++-- .../css_fontface_runtime/font_face_set.rs | 8 +- .../font_face_set/loading.rs | 37 +- .../css_fontface_runtime/loading.rs | 332 ++++++++++++++++++ .../css_fontface_runtime/query.rs | 24 +- .../css_fontface_runtime/storage.rs | 41 +-- .../src/context_bootstrap/shared.rs | 2 + .../src/context_bootstrap/shared/fonts.rs | 32 ++ .../src/document_runtime/security_policy.rs | 22 ++ .../src/native_bridge/context_host/layout.rs | 14 + .../context_host/resource_loading.rs | 42 +++ .../context_host/security_policy.rs | 36 +- moli-renderer-v8/src/network_host.rs | 2 + .../src/network_host/font_face.rs | 188 ++++++++++ .../src/script_vm/subresource_fetch.rs | 24 ++ .../src/script_vm/tests/browser_api/fonts.rs | 183 ++++++++++ .../src/script_vm/tests/browser_api/misc.rs | 31 +- .../src/script_vm/tests/browser_api/mod.rs | 1 + moli-renderer-v8/src/types.rs | 1 + .../css-font-loading/fontface-basic.html | 13 +- .../wpt/ported/idl/fontface-idlharness.html | 11 +- 37 files changed, 1532 insertions(+), 135 deletions(-) create mode 100644 moli-layout/src/text/font_source.rs create mode 100644 moli-renderer-v8/src/context_bootstrap/css_fontface_runtime/loading.rs create mode 100644 moli-renderer-v8/src/context_bootstrap/shared/fonts.rs create mode 100644 moli-renderer-v8/src/network_host/font_face.rs create mode 100644 moli-renderer-v8/src/script_vm/tests/browser_api/fonts.rs diff --git a/Cargo.lock b/Cargo.lock index 6d7cacbb8..3fed80b75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2630,6 +2630,7 @@ dependencies = [ "moli-image", "parking_lot", "parley", + "read-fonts", "stylo", "stylo_taffy", "taffy", diff --git a/moli-core/tests/fixtures/runtime/chrome_fontfaceset_events_subset.html b/moli-core/tests/fixtures/runtime/chrome_fontfaceset_events_subset.html index 4350f7687..05cc7dab8 100644 --- a/moli-core/tests/fixtures/runtime/chrome_fontfaceset_events_subset.html +++ b/moli-core/tests/fixtures/runtime/chrome_fontfaceset_events_subset.html @@ -2,6 +2,9 @@ diff --git a/moli-core/tests/fixtures/runtime/local_event_target_callback_exception.html b/moli-core/tests/fixtures/runtime/local_event_target_callback_exception.html index 91ba69495..b365c92d6 100644 --- a/moli-core/tests/fixtures/runtime/local_event_target_callback_exception.html +++ b/moli-core/tests/fixtures/runtime/local_event_target_callback_exception.html @@ -12,6 +12,9 @@ data-simple-error="" >