fix: preserve macOS font fallback style

This commit is contained in:
2026-07-10 20:58:13 -04:00
parent d5feda9da5
commit 534411f36f
5 changed files with 181 additions and 58 deletions
Generated
+55 -55
View File
@@ -8459,7 +8459,7 @@ dependencies = [
[[package]] [[package]]
name = "servo" name = "servo"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"arboard", "arboard",
@@ -8523,7 +8523,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-allocator" name = "servo-allocator"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"libc", "libc",
"tikv-jemalloc-sys", "tikv-jemalloc-sys",
@@ -8534,7 +8534,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-background-hang-monitor" name = "servo-background-hang-monitor"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"crossbeam-channel", "crossbeam-channel",
@@ -8549,7 +8549,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-background-hang-monitor-api" name = "servo-background-hang-monitor-api"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"serde", "serde",
"servo-base", "servo-base",
@@ -8558,7 +8558,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-base" name = "servo-base"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"crossbeam-channel", "crossbeam-channel",
@@ -8583,7 +8583,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-canvas" name = "servo-canvas"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"crossbeam-channel", "crossbeam-channel",
@@ -8608,7 +8608,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-canvas-traits" name = "servo-canvas-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"crossbeam-channel", "crossbeam-channel",
"euclid", "euclid",
@@ -8630,7 +8630,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-config" name = "servo-config"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"num_enum", "num_enum",
"serde", "serde",
@@ -8643,7 +8643,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-config-macro" name = "servo-config-macro"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -8654,7 +8654,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-constellation" name = "servo-constellation"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"backtrace", "backtrace",
@@ -8698,7 +8698,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-constellation-traits" name = "servo-constellation-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"base64", "base64",
"content-security-policy", "content-security-policy",
@@ -8733,7 +8733,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-default-resources" name = "servo-default-resources"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"servo-embedder-traits", "servo-embedder-traits",
] ]
@@ -8741,7 +8741,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-deny-public-fields" name = "servo-deny-public-fields"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"syn 2.0.117", "syn 2.0.117",
@@ -8751,7 +8751,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-devtools" name = "servo-devtools"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"atomic_refcell", "atomic_refcell",
"base64", "base64",
@@ -8781,7 +8781,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-devtools-traits" name = "servo-devtools-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"http 1.4.0", "http 1.4.0",
"malloc_size_of_derive", "malloc_size_of_derive",
@@ -8798,7 +8798,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-dom-struct" name = "servo-dom-struct"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"prettyplease", "prettyplease",
"proc-macro2", "proc-macro2",
@@ -8809,7 +8809,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-embedder-traits" name = "servo-embedder-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"bitflags 2.11.1", "bitflags 2.11.1",
@@ -8843,7 +8843,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-fonts" name = "servo-fonts"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"app_units", "app_units",
"bitflags 2.11.1", "bitflags 2.11.1",
@@ -8900,7 +8900,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-fonts-traits" name = "servo-fonts-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"atomic_refcell", "atomic_refcell",
"dwrote", "dwrote",
@@ -8924,7 +8924,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-geometry" name = "servo-geometry"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"app_units", "app_units",
"euclid", "euclid",
@@ -8937,7 +8937,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-hyper-serde" name = "servo-hyper-serde"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"cookie 0.18.1", "cookie 0.18.1",
"headers", "headers",
@@ -8951,7 +8951,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-jstraceable-derive" name = "servo-jstraceable-derive"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"syn 2.0.117", "syn 2.0.117",
@@ -8961,7 +8961,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-layout" name = "servo-layout"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"app_units", "app_units",
@@ -9018,7 +9018,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-layout-api" name = "servo-layout-api"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"app_units", "app_units",
"atomic_refcell", "atomic_refcell",
@@ -9051,7 +9051,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-malloc-size-of" name = "servo-malloc-size-of"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"app_units", "app_units",
"atomic_refcell", "atomic_refcell",
@@ -9094,7 +9094,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media" name = "servo-media"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"servo-base", "servo-base",
"servo-media-audio", "servo-media-audio",
@@ -9107,7 +9107,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-audio" name = "servo-media-audio"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"byte-slice-cast", "byte-slice-cast",
"euclid", "euclid",
@@ -9130,7 +9130,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-derive" name = "servo-media-derive"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -9140,7 +9140,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-dummy" name = "servo-media-dummy"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"servo-base", "servo-base",
"servo-media", "servo-media",
@@ -9154,7 +9154,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-ohos" name = "servo-media-ohos"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"crossbeam-channel", "crossbeam-channel",
"libc", "libc",
@@ -9177,7 +9177,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-player" name = "servo-media-player"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"malloc_size_of_derive", "malloc_size_of_derive",
"serde", "serde",
@@ -9190,7 +9190,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-streams" name = "servo-media-streams"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"malloc_size_of_derive", "malloc_size_of_derive",
"servo-malloc-size-of", "servo-malloc-size-of",
@@ -9200,7 +9200,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-thread" name = "servo-media-thread"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"euclid", "euclid",
"ipc-channel", "ipc-channel",
@@ -9219,7 +9219,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-traits" name = "servo-media-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"malloc_size_of_derive", "malloc_size_of_derive",
"servo-malloc-size-of", "servo-malloc-size-of",
@@ -9228,7 +9228,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-media-webrtc" name = "servo-media-webrtc"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"log", "log",
"servo-media-streams", "servo-media-streams",
@@ -9238,7 +9238,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-metrics" name = "servo-metrics"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"malloc_size_of_derive", "malloc_size_of_derive",
"servo-base", "servo-base",
@@ -9253,7 +9253,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-net" name = "servo-net"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"async-compression", "async-compression",
"async-recursion", "async-recursion",
@@ -9323,7 +9323,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-net-traits" name = "servo-net-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"content-security-policy", "content-security-policy",
"cookie 0.18.1", "cookie 0.18.1",
@@ -9363,7 +9363,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-paint" name = "servo-paint"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"bitflags 2.11.1", "bitflags 2.11.1",
"crossbeam-channel", "crossbeam-channel",
@@ -9400,7 +9400,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-paint-api" name = "servo-paint-api"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"bitflags 2.11.1", "bitflags 2.11.1",
"crossbeam-channel", "crossbeam-channel",
@@ -9435,7 +9435,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-pixels" name = "servo-pixels"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"euclid", "euclid",
"image", "image",
@@ -9450,7 +9450,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-profile" name = "servo-profile"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"libc", "libc",
"log", "log",
@@ -9468,7 +9468,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-profile-traits" name = "servo-profile-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"crossbeam-channel", "crossbeam-channel",
"ipc-channel", "ipc-channel",
@@ -9484,7 +9484,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-script" name = "servo-script"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"aes 0.9.1", "aes 0.9.1",
"aes-gcm", "aes-gcm",
@@ -9624,7 +9624,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-script-bindings" name = "servo-script-bindings"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"bitflags 2.11.1", "bitflags 2.11.1",
"crossbeam-channel", "crossbeam-channel",
@@ -9663,7 +9663,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-script-traits" name = "servo-script-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"accesskit", "accesskit",
"crossbeam-channel", "crossbeam-channel",
@@ -9697,7 +9697,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-storage" name = "servo-storage"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"libc", "libc",
"log", "log",
@@ -9722,7 +9722,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-storage-traits" name = "servo-storage-traits"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"malloc_size_of_derive", "malloc_size_of_derive",
"serde", "serde",
@@ -9736,7 +9736,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-timers" name = "servo-timers"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"crossbeam-channel", "crossbeam-channel",
"malloc_size_of_derive", "malloc_size_of_derive",
@@ -9746,7 +9746,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-tracing" name = "servo-tracing"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -9756,7 +9756,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-url" name = "servo-url"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"encoding_rs", "encoding_rs",
"malloc_size_of_derive", "malloc_size_of_derive",
@@ -9770,7 +9770,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-wakelock" name = "servo-wakelock"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"serde", "serde",
"servo-embedder-traits", "servo-embedder-traits",
@@ -9779,7 +9779,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-webgl" name = "servo-webgl"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"bitflags 2.11.1", "bitflags 2.11.1",
"byteorder", "byteorder",
@@ -9803,7 +9803,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-webxr-api" name = "servo-webxr-api"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"euclid", "euclid",
"ipc-channel", "ipc-channel",
@@ -9819,7 +9819,7 @@ dependencies = [
[[package]] [[package]]
name = "servo-xpath" name = "servo-xpath"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/servo/servo.git?rev=a87625150758fe91a29e7f6553ff2f798b87027e#a87625150758fe91a29e7f6553ff2f798b87027e" source = "git+https://github.com/ZacharyZhang-NY/servo.git?rev=8f6850ceb0bd92aea4127d8078ebb2c0485e7f39#8f6850ceb0bd92aea4127d8078ebb2c0485e7f39"
dependencies = [ dependencies = [
"log", "log",
"malloc_size_of_derive", "malloc_size_of_derive",
+1 -1
View File
@@ -36,7 +36,7 @@ hpke = { version = "0.14.0", default-features = false, features = ["alloc", "cha
image = "0.25.10" image = "0.25.10"
keyring-core = "1.0.0" keyring-core = "1.0.0"
rustix = "1.1.4" rustix = "1.1.4"
servo = { version = "0.4.0", git = "https://github.com/servo/servo.git", rev = "a87625150758fe91a29e7f6553ff2f798b87027e" } servo = { version = "0.4.0", git = "https://github.com/ZacharyZhang-NY/servo.git", rev = "8f6850ceb0bd92aea4127d8078ebb2c0485e7f39" }
sha2 = "0.10.9" sha2 = "0.10.9"
semver = "1.0.28" semver = "1.0.28"
serde = { version = "1.0.228", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
+5
View File
@@ -93,6 +93,11 @@ Real and verified:
frames from the active render epoch remain presentable while newer input is frames from the active render epoch remain presentable while newer input is
queued. Clicks, text, and allow-once permission transfers retain strict queued. Clicks, text, and allow-once permission transfers retain strict
ordering. Verified by generation, blocked-worker burst, and live-site tests. ordering. Verified by generation, blocked-worker burst, and live-site tests.
- macOS font fallback: CoreText selects a style- and language-compatible system
font before Servo's static fallback list, preserving sans-serif CJK and
Devanagari typography while retaining serif Chinese. Verified against
PingFang SC, Hiragino Sans, Apple SD Gothic Neo, Kohinoor Devanagari, and
Songti SC with real Servo canvas pixels.
- Website color scheme: resolved System/Light/Dark state crosses sidecar - Website color scheme: resolved System/Light/Dark state crosses sidecar
protocol v4 and reaches `WebView::notify_theme_change`; GPUI appearance protocol v4 and reaches `WebView::notify_theme_change`; GPUI appearance
events trigger a shell repaint, and first-navigation WebView replacement events trigger a shell repaint, and first-navigation WebView replacement
@@ -0,0 +1,114 @@
#![cfg(all(feature = "servo-engine", target_os = "macos"))]
use std::{error::Error, thread, time::Duration};
use ely_domain::{ProfileId, TabId, UrlText};
use ely_servo_host::{
NavigationRequest, ServoHost, ServoSurfaceSize, SoftwareServoHost, WebViewState,
};
const EXPECTED_PASS_COLOR: [u8; 3] = [31, 143, 76];
#[test]
fn macos_fallback_preserves_css_family_style_and_language() -> Result<(), Box<dyn Error>> {
let mut host = SoftwareServoHost::new(ServoSurfaceSize::new(320, 240))?;
let tab_id = TabId::new();
let profile_id = ProfileId::new();
let webview_id = host.create_webview(tab_id.clone(), profile_id)?;
host.navigate(NavigationRequest {
webview_id: webview_id.clone(),
tab_id,
url: UrlText::parse(font_probe_url())?,
})?;
for _ in 0..5_000 {
host.tick();
let snapshot = host.snapshot(&webview_id)?;
if snapshot.has_pending_frame() {
host.paint(&webview_id)?;
}
let snapshot = host.snapshot(&webview_id)?;
if snapshot.state() == &WebViewState::Complete
&& host
.last_rendered_frame()
.is_ok_and(|frame| center_pixel_rgb(&frame) == EXPECTED_PASS_COLOR)
{
return Ok(());
}
thread::sleep(Duration::from_millis(2));
}
let actual = host.last_rendered_frame().map(|frame| center_pixel_rgb(&frame));
let title = host.snapshot(&webview_id)?.title().map(str::to_owned);
Err(format!(
"macOS font fallback probe failed with center pixel {actual:?} and title {title:?}"
)
.into())
}
fn font_probe_url() -> String {
let html = r#"<!doctype html>
<html><head><meta charset="utf-8"><title>starting</title><style>
html,body{margin:0;width:100%;height:100%;background:rgb(181,37,46)}
canvas{position:absolute;left:-10000px;top:-10000px}
</style></head><body><script>
try {
const cases = [
['zh-Hans', '搜索中文', '48px Arial, sans-serif', "48px 'PingFang SC'"],
['ja', '日本語検索', '48px Arial, sans-serif', "48px 'Hiragino Sans'"],
['ko', '한국어검색', '48px Arial, sans-serif', "48px 'Apple SD Gothic Neo'"],
['hi', 'हिन्दी', '48px Arial, sans-serif', "48px 'Kohinoor Devanagari'"],
['zh-Hans', '搜索中文', '48px Times New Roman, serif', "48px 'Songti SC'"]
];
function pixels(lang, text, font) {
const canvas = document.createElement('canvas');
canvas.lang = lang;
canvas.width = 512;
canvas.height = 96;
document.body.appendChild(canvas);
const context = canvas.getContext('2d');
context.fillStyle = 'black';
context.font = font;
context.fillText(text, 8, 64);
return context.getImageData(0, 0, canvas.width, canvas.height).data;
}
function equal(left, right) {
if (left.length !== right.length) return false;
for (let index = 0; index < left.length; index++) {
if (left[index] !== right[index]) return false;
}
return true;
}
const results = cases.map(([lang, text, requested, expected]) =>
equal(pixels(lang, text, requested), pixels(lang, text, expected))
);
const passed = results.every(Boolean);
document.title = results.map((result, index) => `${index}:${result}`).join(',');
document.body.style.background = passed ? 'rgb(31,143,76)' : 'rgb(181,37,46)';
} catch (error) {
document.title = `${error.name}:${error.message}`;
document.body.style.background = 'rgb(181,37,46)';
}
</script></body></html>"#;
format!("data:text/html,{}", percent_encode(html))
}
fn percent_encode(value: &str) -> String {
value
.bytes()
.map(|byte| match byte {
b'A'..=b'Z' | b'a'..=b'z' | b'0'..=b'9' | b'-' | b'_' | b'.' | b'~' => {
(byte as char).to_string()
}
_ => format!("%{byte:02X}"),
})
.collect()
}
fn center_pixel_rgb(frame: &ely_servo_host::RenderedFrame) -> [u8; 3] {
let index = (((frame.height() / 2) * frame.width() + frame.width() / 2) * 4) as usize;
let rgba = &frame.rgba_bytes()[index..index + 4];
[rgba[0], rgba[1], rgba[2]]
}
+6 -2
View File
@@ -109,8 +109,10 @@ The integration gates prove these invariants with real Servo networking:
## Upstream Servo Route ## Upstream Servo Route
ELY pins Servo upstream commit `a87625150758fe91a29e7f6553ff2f798b87027e`, workspace version ELY pins fork commit `8f6850ceb0bd92aea4127d8078ebb2c0485e7f39`, based on Servo upstream
`0.4.0`, in `Cargo.toml` and `Cargo.lock`. commit `a87625150758fe91a29e7f6553ff2f798b87027e`, workspace version `0.4.0`, in
`Cargo.toml` and `Cargo.lock`. The fork moves macOS CoreText fallback ahead of Servo's static
fallback-family list so the first CSS font preserves its serif or sans-serif cascade and language.
Servo's rendering lifecycle remains authoritative inside each sidecar: Servo's rendering lifecycle remains authoritative inside each sidecar:
@@ -129,6 +131,8 @@ Relevant upstream evidence at the pinned revision:
- `ports/servoshell/window.rs` repaints with `webview.paint()` and presents the context. - `ports/servoshell/window.rs` repaints with `webview.paint()` and presents the context.
- `ports/servoshell/running_app_state.rs` maps `notify_new_frame_ready` to repaint scheduling. - `ports/servoshell/running_app_state.rs` maps `notify_new_frame_ready` to repaint scheduling.
- `components/paint/paint.rs` owns one WebRender painter per rendering context. - `components/paint/paint.rs` owns one WebRender painter per rendering context.
- `components/fonts/font.rs` asks CoreText for a style- and language-compatible macOS fallback
before consulting the cross-platform fallback-family list.
## Ownership ## Ownership