Skip to content

Commit 6aa9e3c

Browse files
authored
Unrolled build for rust-lang#133636
Rollup merge of rust-lang#133636 - GuillaumeGomez:sans-serif, r=rustdoc [rustdoc] Add sans-serif font setting Fixes rust-lang#52449. This PR adds a new setting introducing the possibility to switch to a sans-serif font (`Fira Sans`) for the text. Can be tested [here](https://rustdoc.crud.net/imperio/sans-serif/std/index.html). cc ```@rust-lang/rustdoc-frontend``` r? ```@notriddle```
2 parents a6434ef + 2511faf commit 6aa9e3c

17 files changed

+117
-11
lines changed

Diff for: REUSE.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ SPDX-FileCopyrightText = "2015 Anders Kaseorg <[email protected]>"
9292
SPDX-License-Identifier = "MIT"
9393

9494
[[annotations]]
95-
path = "src/librustdoc/html/static/fonts/FiraSans**"
95+
path = "src/librustdoc/html/static/fonts/Fira**"
9696
precedence = "override"
9797
SPDX-FileCopyrightText = ["2014, Mozilla Foundation", "2014, Telefonica S.A."]
9898
SPDX-License-Identifier = "OFL-1.1"

Diff for: license-metadata.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,12 @@
113113
{
114114
"directories": [],
115115
"files": [
116+
"FiraMono-Medium.woff2",
117+
"FiraMono-Regular.woff2",
118+
"FiraSans-Italic.woff2",
116119
"FiraSans-LICENSE.txt",
117120
"FiraSans-Medium.woff2",
121+
"FiraSans-MediumItalic.woff2",
118122
"FiraSans-Regular.woff2"
119123
],
120124
"license": {
@@ -266,4 +270,4 @@
266270
],
267271
"type": "root"
268272
}
269-
}
273+
}

Diff for: src/librustdoc/build.rs

+5
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ fn main() {
1717
"static/images/rust-logo.svg",
1818
"static/images/favicon.svg",
1919
"static/images/favicon-32x32.png",
20+
"static/fonts/FiraSans-Italic.woff2",
2021
"static/fonts/FiraSans-Regular.woff2",
2122
"static/fonts/FiraSans-Medium.woff2",
23+
"static/fonts/FiraSans-MediumItalic.woff2",
24+
"static/fonts/FiraMono-Regular.woff2",
25+
"static/fonts/FiraMono-Medium.woff2",
2226
"static/fonts/FiraSans-LICENSE.txt",
2327
"static/fonts/SourceSerif4-Regular.ttf.woff2",
28+
"static/fonts/SourceSerif4-Semibold.ttf.woff2",
2429
"static/fonts/SourceSerif4-Bold.ttf.woff2",
2530
"static/fonts/SourceSerif4-It.ttf.woff2",
2631
"static/fonts/SourceSerif4-LICENSE.md",

Diff for: src/librustdoc/html/static/COPYRIGHT.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ included, and carry their own copyright notices and license terms:
3636
See SourceCodePro-LICENSE.txt.
3737

3838
* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2,
39-
SourceSerif4-It.ttf.woff2):
39+
SourceSerif4-It.ttf.woff2, SourceSerif4-Semibold.ttf.woff2):
4040

4141
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name
4242
'Source'. All Rights Reserved. Source is a trademark of Adobe in the United

Diff for: src/librustdoc/html/static/css/rustdoc.css

+49-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
3838
--code-block-border-radius: 6px;
3939
--impl-items-indent: 0.3em;
4040
--docblock-indent: 24px;
41+
--font-family: "Source Serif 4", NanumBarunGothic, serif;
42+
--font-family-code: "Source Code Pro", monospace;
43+
}
44+
45+
:root.sans-serif {
46+
--font-family: "Fira Sans", sans-serif;
47+
--font-family-code: "Fira Mono", monospace;
4148
}
4249

4350
/* See FiraSans-LICENSE.txt for the Fira Sans license. */
@@ -49,6 +56,14 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
4956
url("FiraSans-Regular-0fe48ade.woff2") format("woff2");
5057
font-display: swap;
5158
}
59+
@font-face {
60+
font-family: 'Fira Sans';
61+
font-style: italic;
62+
font-weight: 400;
63+
src: local('Fira Sans Italic'),
64+
url("FiraSans-Italic-81dc35de.woff2") format("woff2");
65+
font-display: swap;
66+
}
5267
@font-face {
5368
font-family: 'Fira Sans';
5469
font-style: normal;
@@ -57,6 +72,30 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
5772
url("FiraSans-Medium-e1aa3f0a.woff2") format("woff2");
5873
font-display: swap;
5974
}
75+
@font-face {
76+
font-family: 'Fira Sans';
77+
font-style: italic;
78+
font-weight: 500;
79+
src: local('Fira Sans Medium Italic'),
80+
url("FiraSans-MediumItalic-ccf7e434.woff2") format("woff2");
81+
font-display: swap;
82+
}
83+
@font-face {
84+
font-family: 'Fira Mono';
85+
font-style: normal;
86+
font-weight: 400;
87+
src: local('Fira Mono'),
88+
url("FiraMono-Regular-87c26294.woff2") format("woff2");
89+
font-display: swap;
90+
}
91+
@font-face {
92+
font-family: 'Fira Mono';
93+
font-style: normal;
94+
font-weight: 500;
95+
src: local('Fira Mono Medium'),
96+
url("FiraMono-Medium-86f75c8c.woff2") format("woff2");
97+
font-display: swap;
98+
}
6099

61100
/* See SourceSerif4-LICENSE.md for the Source Serif 4 license. */
62101
@font-face {
@@ -75,6 +114,14 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
75114
url("SourceSerif4-It-ca3b17ed.ttf.woff2") format("woff2");
76115
font-display: swap;
77116
}
117+
@font-face {
118+
font-family: 'Source Serif 4';
119+
font-style: normal;
120+
font-weight: 500;
121+
src: local('Source Serif 4 Semibold'),
122+
url("SourceSerif4-Semibold-457a13ac.ttf.woff2") format("woff2");
123+
font-display: swap;
124+
}
78125
@font-face {
79126
font-family: 'Source Serif 4';
80127
font-style: normal;
@@ -126,7 +173,7 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
126173
body {
127174
/* Line spacing at least 1.5 per Web Content Accessibility Guidelines
128175
https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation.html */
129-
font: 1rem/1.5 "Source Serif 4", NanumBarunGothic, serif;
176+
font: 1rem/1.5 var(--font-family);
130177
margin: 0;
131178
position: relative;
132179
/* We use overflow-wrap: break-word for Safari, which doesn't recognize
@@ -380,7 +427,7 @@ details:not(.toggle) summary {
380427
}
381428

382429
code, pre, .code-header, .type-signature {
383-
font-family: "Source Code Pro", monospace;
430+
font-family: var(--font-family-code);
384431
}
385432
.docblock code, .item-table dd code {
386433
border-radius: 3px;
63.1 KB
Binary file not shown.
63.3 KB
Binary file not shown.
133 KB
Binary file not shown.
137 KB
Binary file not shown.
Binary file not shown.

Diff for: src/librustdoc/html/static/js/settings.js

+11
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@
5353
removeClass(document.documentElement, "hide-modnav");
5454
}
5555
break;
56+
case "sans-serif-fonts":
57+
if (value === true) {
58+
addClass(document.documentElement, "sans-serif");
59+
} else {
60+
removeClass(document.documentElement, "sans-serif");
61+
}
5662
}
5763
}
5864

@@ -235,6 +241,11 @@
235241
"js_name": "disable-shortcuts",
236242
"default": false,
237243
},
244+
{
245+
"name": "Use sans serif fonts",
246+
"js_name": "sans-serif-fonts",
247+
"default": false,
248+
},
238249
];
239250

240251
// Then we build the DOM.

Diff for: src/librustdoc/html/static/js/storage.js

+3
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,9 @@ if (getSettingValue("hide-toc") === "true") {
279279
if (getSettingValue("hide-modnav") === "true") {
280280
addClass(document.documentElement, "hide-modnav");
281281
}
282+
if (getSettingValue("sans-serif-fonts") === "true") {
283+
addClass(document.documentElement, "sans-serif");
284+
}
282285
function updateSidebarWidth() {
283286
const desktopSidebarWidth = getSettingValue("desktop-sidebar-width");
284287
if (desktopSidebarWidth && desktopSidebarWidth !== "null") {

Diff for: src/librustdoc/html/static_files.rs

+5
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,15 @@ static_files! {
9898
rust_logo_svg => "static/images/rust-logo.svg",
9999
rust_favicon_svg => "static/images/favicon.svg",
100100
rust_favicon_png_32 => "static/images/favicon-32x32.png",
101+
fira_sans_italic => "static/fonts/FiraSans-Italic.woff2",
101102
fira_sans_regular => "static/fonts/FiraSans-Regular.woff2",
102103
fira_sans_medium => "static/fonts/FiraSans-Medium.woff2",
104+
fira_sans_medium_italic => "static/fonts/FiraSans-MediumItalic.woff2",
105+
fira_mono_regular => "static/fonts/FiraMono-Regular.woff2",
106+
fira_mono_medium => "static/fonts/FiraMono-Medium.woff2",
103107
fira_sans_license => "static/fonts/FiraSans-LICENSE.txt",
104108
source_serif_4_regular => "static/fonts/SourceSerif4-Regular.ttf.woff2",
109+
source_serif_4_semibold => "static/fonts/SourceSerif4-Semibold.ttf.woff2",
105110
source_serif_4_bold => "static/fonts/SourceSerif4-Bold.ttf.woff2",
106111
source_serif_4_italic => "static/fonts/SourceSerif4-It.ttf.woff2",
107112
source_serif_4_license => "static/fonts/SourceSerif4-LICENSE.md",

Diff for: src/librustdoc/html/templates/page.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<meta name="description" content="{{page.description}}"> {# #}
88
<title>{{page.title}}</title> {# #}
99
<script>if(window.location.protocol!=="file:") {# Hack to skip preloading fonts locally - see #98769 #}
10-
document.head.insertAdjacentHTML("beforeend","{{files.source_serif_4_regular}},{{files.fira_sans_regular}},{{files.fira_sans_medium}},{{files.source_code_pro_regular}},{{files.source_code_pro_semibold}}".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}${f}">`).join("")) {# #}
10+
document.head.insertAdjacentHTML("beforeend","{{files.source_serif_4_regular}},{{files.fira_sans_italic}},{{files.fira_sans_regular}},{{files.fira_sans_medium_italic}},{{files.fira_sans_medium}},{{files.source_code_pro_regular}},{{files.source_code_pro_semibold}}".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}${f}">`).join("")) {# #}
1111
</script> {# #}
1212
<link rel="stylesheet" {#+ #}
1313
href="{{static_root_path|safe}}{{files.normalize_css}}"> {# #}

Diff for: src/tools/tidy/src/bins.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ mod os_impl {
134134
&mut |entry| {
135135
let file = entry.path();
136136
let extension = file.extension();
137-
let scripts = ["py", "sh", "ps1"];
137+
let scripts = ["py", "sh", "ps1", "woff2"];
138138
if scripts.into_iter().any(|e| extension == Some(OsStr::new(e))) {
139139
return;
140140
}

Diff for: tests/rustdoc-gui/font-serif-change.goml

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Ensures that the font serif change is working as expected.
2+
go-to: "file://" + |DOC_PATH| + "/test_docs/index.html"
3+
4+
// By default, it should be the serif fonts.
5+
store-value: (serif_font, '"Source Serif 4", NanumBarunGothic, serif')
6+
store-value: (serif_code_font, '"Source Code Pro", monospace')
7+
assert-css: ("body", {"font-family": |serif_font|})
8+
assert-css: ("p code", {"font-family": |serif_code_font|})
9+
10+
// We now switch to the sans serif font
11+
click: "#settings-menu"
12+
wait-for: "#sans-serif-fonts"
13+
click: "#sans-serif-fonts"
14+
15+
store-value: (font, '"Fira Sans", sans-serif')
16+
store-value: (code_font, '"Fira Mono", monospace')
17+
assert-css: ("body", {"font-family": |font|})
18+
assert-css: ("p code", {"font-family": |code_font|})
19+
20+
// Reloading the page to ensure it is loaded correctly.
21+
reload:
22+
assert-css: ("body", {"font-family": |font|})
23+
assert-css: ("p code", {"font-family": |code_font|})
24+
25+
// We switch back to the serif font
26+
click: "#settings-menu"
27+
wait-for: "#sans-serif-fonts"
28+
click: "#sans-serif-fonts"
29+
30+
assert-css: ("body", {"font-family": |serif_font|})
31+
assert-css: ("p code", {"font-family": |serif_code_font|})

Diff for: tests/rustdoc-gui/settings.goml

+4-4
Original file line numberDiff line numberDiff line change
@@ -257,15 +257,15 @@ assert-text: ("#preferred-light-theme .setting-radio-name", "Preferred light the
257257
// We now check that clicking on the toggles' text is like clicking on the checkbox.
258258
// To test it, we use the "Disable keyboard shortcuts".
259259
set-local-storage: {"rustdoc-disable-shortcuts": "false"}
260-
click: ".setting-line:last-child .setting-check span"
260+
click: "#disable-shortcuts"
261261
assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
262262

263263
// We now check that focusing a toggle and pressing Space is like clicking on it.
264264
assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
265-
focus: ".setting-line:last-child .setting-check input"
265+
focus: "#disable-shortcuts"
266266
press-key: "Space"
267267
assert-local-storage: {"rustdoc-disable-shortcuts": "false"}
268-
focus: ".setting-line:last-child .setting-check input"
268+
focus: "#disable-shortcuts"
269269
press-key: "Space"
270270
assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
271271

@@ -276,7 +276,7 @@ assert-false: "#help-button .popover"
276276
wait-for-css: ("#settings-menu .popover", {"display": "block"})
277277

278278
// Now turn keyboard shortcuts back on, and see if they work.
279-
click: ".setting-line:last-child .setting-check span"
279+
click: "#disable-shortcuts"
280280
assert-local-storage: {"rustdoc-disable-shortcuts": "false"}
281281
press-key: "Escape"
282282
press-key: "?"

0 commit comments

Comments
 (0)