richard pushed to branch tor-browser-115.11.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
b4fbb624
by Pier Angelo Vendrame at 2024-05-30T08:49:54+02:00
-
73f0f817
by Pier Angelo Vendrame at 2024-05-30T08:50:18+02:00
-
3841a1fd
by Pier Angelo Vendrame at 2024-05-30T08:50:37+02:00
-
09bd48db
by Pier Angelo Vendrame at 2024-05-30T08:56:02+02:00
-
fa069b8b
by cypherpunks1 at 2024-05-30T08:56:03+02:00
5 changed files:
- gfx/thebes/gfxPlatformFontList.cpp
- layout/base/nsLayoutUtils.cpp
- layout/reftests/font-matching/reftest.list
- + layout/reftests/font-matching/system-font-rfp-ref.html
- + layout/reftests/font-matching/system-font-rfp.html
Changes:
| ... | ... | @@ -1973,19 +1973,17 @@ static void GetSystemUIFontFamilies(const nsPresContext* aPresContext, |
| 1973 | 1973 | nsFont systemFont;
|
| 1974 | 1974 | gfxFontStyle fontStyle;
|
| 1975 | 1975 | nsAutoString systemFontName;
|
| 1976 | - if (aPresContext && aPresContext->Document()
|
|
| 1977 | - ? aPresContext->Document()->ShouldResistFingerprinting(
|
|
| 1978 | - RFPTarget::Unknown)
|
|
| 1979 | - : nsContentUtils::ShouldResistFingerprinting(
|
|
| 1980 | - "aPresContext not available", RFPTarget::Unknown)) {
|
|
| 1981 | -#ifdef XP_MACOSX
|
|
| 1976 | + if (aPresContext ? aPresContext->Document()->ShouldResistFingerprinting(
|
|
| 1977 | + RFPTarget::Unknown)
|
|
| 1978 | + : nsContentUtils::ShouldResistFingerprinting(
|
|
| 1979 | + "aPresContext not available", RFPTarget::Unknown)) {
|
|
| 1980 | +#if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT)
|
|
| 1982 | 1981 | *aFamilies.AppendElement() = "-apple-system"_ns;
|
| 1983 | 1982 | return;
|
| 1984 | 1983 | #elif !defined(MOZ_WIDGET_ANDROID)
|
| 1985 | 1984 | *aFamilies.AppendElement() = "sans-serif"_ns;
|
| 1986 | 1985 | return;
|
| 1987 | 1986 | #endif
|
| 1988 | - // Android uses already fixed fonts.
|
|
| 1989 | 1987 | }
|
| 1990 | 1988 | if (!LookAndFeel::GetFont(StyleSystemFont::Menu, systemFontName, fontStyle)) {
|
| 1991 | 1989 | return;
|
| ... | ... | @@ -9680,7 +9680,7 @@ already_AddRefed<nsFontMetrics> nsLayoutUtils::GetMetricsFor( |
| 9680 | 9680 | |
| 9681 | 9681 | static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID,
|
| 9682 | 9682 | gfxFontStyle& aStyle, nsAString& aName) {
|
| 9683 | -#if defined(XP_MACOSX)
|
|
| 9683 | +#if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT)
|
|
| 9684 | 9684 | aName = u"-apple-system"_ns;
|
| 9685 | 9685 | // Values taken from a macOS 10.15 system.
|
| 9686 | 9686 | switch (aFontID) {
|
| ... | ... | @@ -9690,7 +9690,8 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
| 9690 | 9690 | break;
|
| 9691 | 9691 | case LookAndFeel::FontID::SmallCaption:
|
| 9692 | 9692 | aStyle.weight = gfxFontStyle::FontWeight::BOLD;
|
| 9693 | - // fall-through
|
|
| 9693 | + // fall-through for font-size
|
|
| 9694 | + [[fallthrough]];
|
|
| 9694 | 9695 | case LookAndFeel::FontID::MessageBox:
|
| 9695 | 9696 | case LookAndFeel::FontID::StatusBar:
|
| 9696 | 9697 | aStyle.size = 11;
|
| ... | ... | @@ -9704,14 +9705,13 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
| 9704 | 9705 | // languages, so we fallback to sans-serif to fall back to the user's
|
| 9705 | 9706 | // default sans-serif. Size is 12px for all system fonts (tried in an en-US
|
| 9706 | 9707 | // system).
|
| 9707 | - // Several Android systems reported Roboto 12px, so similar to what Windows
|
|
| 9708 | - // does.
|
|
| 9709 | 9708 | aName = u"sans-serif"_ns;
|
| 9710 | 9709 | aStyle.size = 12;
|
| 9711 | 9710 | #elif defined(MOZ_WIDGET_ANDROID)
|
| 9711 | + // Keep consistency with nsLookAndFeel::NativeGetFont.
|
|
| 9712 | 9712 | aName = u"Roboto"_ns;
|
| 9713 | 9713 | aStyle.size = 12;
|
| 9714 | -#else
|
|
| 9714 | +#elif defined(MOZ_WIDGET_GTK)
|
|
| 9715 | 9715 | // On Linux, there is not a default. For example, GNOME on Debian uses
|
| 9716 | 9716 | // Cantarell, 14.667px. Ubuntu Mate uses the Ubuntu font, but also 14.667px.
|
| 9717 | 9717 | // Fedora with KDE uses Noto Sans, 13.3333px, but it uses Noto Sans on
|
| ... | ... | @@ -9721,6 +9721,8 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
| 9721 | 9721 | // UI font-size.
|
| 9722 | 9722 | aName = u"sans-serif"_ns;
|
| 9723 | 9723 | aStyle.size = 15;
|
| 9724 | +#else
|
|
| 9725 | +# error "Unknown platform"
|
|
| 9724 | 9726 | #endif
|
| 9725 | 9727 | }
|
| 9726 | 9728 |
| ... | ... | @@ -195,3 +195,6 @@ pref(ui.font.menu,"serif") test-pref(ui.font.menu.weight,"800") != system-font-p |
| 195 | 195 | |
| 196 | 196 | # Reset default prefs.
|
| 197 | 197 | defaults
|
| 198 | + |
|
| 199 | +# Bug 1787790 - Normalize system fonts when using RFP
|
|
| 200 | +test-pref(privacy.resistFingerprinting,true) == system-font-rfp.html system-font-rfp-ref.html |
| 1 | +<!DOCTYPE html>
|
|
| 2 | +<meta charset="utf-8">
|
|
| 3 | +<style>
|
|
| 4 | +body {
|
|
| 5 | + font-family: -apple-system, sans-serif;
|
|
| 6 | + font-size: 12px;
|
|
| 7 | +}
|
|
| 8 | + |
|
| 9 | +.android {
|
|
| 10 | + font-family: Roboto;
|
|
| 11 | +}
|
|
| 12 | + |
|
| 13 | +.linux {
|
|
| 14 | + font-size: 15px;
|
|
| 15 | +}
|
|
| 16 | + |
|
| 17 | +.mac {
|
|
| 18 | + .caption, .menu {
|
|
| 19 | + font-size: 13px;
|
|
| 20 | + }
|
|
| 21 | + .message-box, .status-bar {
|
|
| 22 | + font-size: 11px;
|
|
| 23 | + }
|
|
| 24 | + .small-caption {
|
|
| 25 | + font-size: 11px;
|
|
| 26 | + font-weight: 700;
|
|
| 27 | + }
|
|
| 28 | +}
|
|
| 29 | +</style>
|
|
| 30 | +<div class="caption">Caption</div>
|
|
| 31 | +<div class="icon">Icon</div>
|
|
| 32 | +<div class="menu">Menu</div>
|
|
| 33 | +<div class="message-box">Message box</div>
|
|
| 34 | +<div class="small-caption">Small caption</div>
|
|
| 35 | +<div class="status-bar">Status bar</div>
|
|
| 36 | +<script>
|
|
| 37 | +if (navigator.platform.startsWith("Mac")) {
|
|
| 38 | + document.querySelector("body").className = "mac";
|
|
| 39 | +} else if (navigator.userAgent.includes("Android")) {
|
|
| 40 | + document.querySelector("body").className = "android";
|
|
| 41 | +} else if (navigator.platform.startsWith("Linux")) {
|
|
| 42 | + document.querySelector("body").className = "linux";
|
|
| 43 | +}
|
|
| 44 | +</script> |
| 1 | +<!DOCTYPE html>
|
|
| 2 | +<meta charset="utf-8">
|
|
| 3 | +<div style="font: caption">Caption</div>
|
|
| 4 | +<div style="font: icon">Icon</div>
|
|
| 5 | +<div style="font: menu">Menu</div>
|
|
| 6 | +<div style="font: message-box">Message box</div>
|
|
| 7 | +<div style="font: small-caption">Small caption</div>
|
|
| 8 | +<div style="font: status-bar">Status bar</div> |