Skip to content

Commit 0cf50b3

Browse files
committed
Merge branch 'main' of github.com:HTTPArchive/almanac.httparchive.org into production
2 parents dc0c2ab + 6c2d404 commit 0cf50b3

File tree

15 files changed

+63
-54
lines changed

15 files changed

+63
-54
lines changed

src/config/last_updated.json

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -52,188 +52,188 @@
5252
"/static/pdfs/web_almanac_2019_en.pdf": {
5353
"date_published": "2020-05-15T00:00:00.000Z",
5454
"date_modified": "2026-01-17T00:00:00.000Z",
55-
"hash": "738b47f10e87bdf9ddc374cac33c6bab",
55+
"hash": "8c0f2ce86bfbd653b5f4aee64283243f",
5656
"size": 9
5757
},
5858
"/static/pdfs/web_almanac_2019_en_cover_A5.pdf": {
5959
"date_published": "2020-05-15T00:00:00.000Z",
6060
"date_modified": "2026-01-17T00:00:00.000Z",
61-
"hash": "6967a99eceaf112a89899e3dc614293e"
61+
"hash": "6b7fdd4d7920adc14baa23071806c069"
6262
},
6363
"/static/pdfs/web_almanac_2019_en_print_A5.pdf": {
6464
"date_published": "2020-05-15T00:00:00.000Z",
6565
"date_modified": "2026-01-17T00:00:00.000Z",
66-
"hash": "3a0ca7d82ca0114f5f5938c5928f0fc9",
66+
"hash": "cb6a62c4fd18e3d44b139d6173e292bc",
6767
"size": 9
6868
},
6969
"/static/pdfs/web_almanac_2019_ja.pdf": {
7070
"date_published": "2020-05-15T00:00:00.000Z",
7171
"date_modified": "2026-01-17T00:00:00.000Z",
72-
"hash": "512b0e912578c4fa7bca0e20e37d54f0",
72+
"hash": "30921b7f5a461f927506a9a865341aaf",
7373
"size": 10
7474
},
7575
"/static/pdfs/web_almanac_2019_ja_cover_A5.pdf": {
7676
"date_published": "2020-05-15T00:00:00.000Z",
7777
"date_modified": "2026-01-17T00:00:00.000Z",
78-
"hash": "a1e4b9de9a05beea277b7c0768cd9145"
78+
"hash": "bbbc4f38b725ff09745e8f22b4a00fd3"
7979
},
8080
"/static/pdfs/web_almanac_2019_ja_print_A5.pdf": {
8181
"date_published": "2020-05-15T00:00:00.000Z",
8282
"date_modified": "2026-01-17T00:00:00.000Z",
83-
"hash": "45a002a76ce99d918975ae5f2b43f7e8",
83+
"hash": "90a1cf8e3bba8d8e2d92ec69d3ef0710",
8484
"size": 9
8585
},
8686
"/static/pdfs/web_almanac_2020_en.pdf": {
8787
"date_published": "2020-12-08T00:00:00.000Z",
8888
"date_modified": "2026-01-17T00:00:00.000Z",
89-
"hash": "63a4949fe94c402c3a8801bb404bd6e0",
89+
"hash": "72d3bdcd52c9869f98baff2f10ca5b94",
9090
"size": 13
9191
},
9292
"/static/pdfs/web_almanac_2020_en_cover_A5.pdf": {
9393
"date_published": "2020-12-09T00:00:00.000Z",
9494
"date_modified": "2026-01-17T00:00:00.000Z",
95-
"hash": "a69cf75485952a8c0a4932d6c4644b69"
95+
"hash": "95b63e9d8cc56a9fcb7caa5b868d008b"
9696
},
9797
"/static/pdfs/web_almanac_2020_en_print_A5.pdf": {
9898
"date_published": "2020-12-09T00:00:00.000Z",
9999
"date_modified": "2026-01-17T00:00:00.000Z",
100-
"hash": "ebc577aa30e69ffd0927f8c3df7147ed",
100+
"hash": "f67fb9672f1fbc8d8fb8d9d7c49e7b00",
101101
"size": 13
102102
},
103103
"/static/pdfs/web_almanac_2020_ja.pdf": {
104104
"date_published": "2021-10-24T00:00:00.000Z",
105105
"date_modified": "2026-01-17T00:00:00.000Z",
106-
"hash": "78c894cad6bfa94b37bb8ad8ea79d154",
106+
"hash": "bd65a8cc85f805924f1bb27affa82845",
107107
"size": 14
108108
},
109109
"/static/pdfs/web_almanac_2020_ja_cover_A5.pdf": {
110110
"date_published": "2021-10-24T00:00:00.000Z",
111111
"date_modified": "2026-01-17T00:00:00.000Z",
112-
"hash": "f3219fd4511f8f478359f6d1d3282ea0"
112+
"hash": "aacc4a3b45e82b45c8a83ed5eb1483e5"
113113
},
114114
"/static/pdfs/web_almanac_2020_ja_print_A5.pdf": {
115115
"date_published": "2021-10-24T00:00:00.000Z",
116116
"date_modified": "2026-01-17T00:00:00.000Z",
117-
"hash": "c61cac62cf0f84c8399cc9e3864fba6a",
117+
"hash": "a8b12bdc90a455684de8d14e9b9b49d6",
118118
"size": 13
119119
},
120120
"/static/pdfs/web_almanac_2021_en.pdf": {
121121
"date_published": "2021-12-01T00:00:00.000Z",
122122
"date_modified": "2026-01-17T00:00:00.000Z",
123-
"hash": "047b65858df8f8707982d72f3c720c27",
123+
"hash": "a0926a730bb9a8a8710851f09ebd4f50",
124124
"size": 18
125125
},
126126
"/static/pdfs/web_almanac_2021_en_cover_A5.pdf": {
127127
"date_published": "2021-12-01T00:00:00.000Z",
128128
"date_modified": "2026-01-17T00:00:00.000Z",
129-
"hash": "981d18e508bb8325d8b59f4f5ad7d984"
129+
"hash": "556f6544ceda759117a4b0cfe178d1ce"
130130
},
131131
"/static/pdfs/web_almanac_2021_en_print_A5.pdf": {
132132
"date_published": "2021-12-01T00:00:00.000Z",
133133
"date_modified": "2026-01-17T00:00:00.000Z",
134-
"hash": "8a958afe24a5ad99b86c4530d9cd0650",
134+
"hash": "fcfbb24a7e7d1e375b8ba27d9da09531",
135135
"size": 17
136136
},
137137
"/static/pdfs/web_almanac_2021_ja.pdf": {
138138
"date_published": "22-08-01T00:00:00.000Z",
139139
"date_modified": "2026-01-17T00:00:00.000Z",
140-
"hash": "fd494e29397a4dddf5a6abbe78728bab",
140+
"hash": "bb2127f172a28156fe8707d786067c3a",
141141
"size": 18
142142
},
143143
"/static/pdfs/web_almanac_2021_ja_cover_A5.pdf": {
144144
"date_published": "22-08-01T00:00:00.000Z",
145145
"date_modified": "2026-01-17T00:00:00.000Z",
146-
"hash": "ec0c91cf6d8914daa41b4651b7edb18d"
146+
"hash": "33161c906b715f47768b2dc13c0b002e"
147147
},
148148
"/static/pdfs/web_almanac_2021_ja_print_A5.pdf": {
149149
"date_published": "22-08-01T00:00:00.000Z",
150150
"date_modified": "2026-01-17T00:00:00.000Z",
151-
"hash": "482b1c598f17363268137eac99dc6824",
151+
"hash": "2aba0608544e1d22ebef6f89471c5376",
152152
"size": 18
153153
},
154154
"/static/pdfs/web_almanac_2022_en.pdf": {
155155
"date_published": "2022-10-19T00:00:00.000Z",
156156
"date_modified": "2026-01-17T00:00:00.000Z",
157-
"hash": "7cbde6c888cfdec70ecafe848b299f54",
157+
"hash": "3f0140194a952ea06638be0a66d8c653",
158158
"size": 16
159159
},
160160
"/static/pdfs/web_almanac_2022_en_cover_A5.pdf": {
161161
"date_published": "2022-10-19T00:00:00.000Z",
162162
"date_modified": "2026-01-17T00:00:00.000Z",
163-
"hash": "540efeabcb93bb25c16b66333cb9dc12"
163+
"hash": "f6ea788bf56666c084cee9378bdf2093"
164164
},
165165
"/static/pdfs/web_almanac_2022_en_print_A5.pdf": {
166166
"date_published": "2022-10-19T00:00:00.000Z",
167167
"date_modified": "2026-01-17T00:00:00.000Z",
168-
"hash": "2fdaac82ea4bf0432660cc7d292124fd",
168+
"hash": "a61fa7f27b7f33d428733c55ec3af996",
169169
"size": 16
170170
},
171171
"/static/pdfs/web_almanac_2022_ja.pdf": {
172172
"date_published": "2024-09-26T00:00:00.000Z",
173173
"date_modified": "2026-01-17T00:00:00.000Z",
174-
"hash": "3f26a54e65dea0e7a56e2df27f76dbd6",
174+
"hash": "e91e1d3cd59cbbbfc5c1a35752e161d0",
175175
"size": 17
176176
},
177177
"/static/pdfs/web_almanac_2022_ja_cover_A5.pdf": {
178178
"date_published": "2024-09-26T00:00:00.000Z",
179179
"date_modified": "2026-01-17T00:00:00.000Z",
180-
"hash": "d0d7280638479cfb493f8435042694ba"
180+
"hash": "77b5601b2aee508a0c2a5653d52435cc"
181181
},
182182
"/static/pdfs/web_almanac_2022_ja_print_A5.pdf": {
183183
"date_published": "2024-09-26T00:00:00.000Z",
184184
"date_modified": "2026-01-17T00:00:00.000Z",
185-
"hash": "de3ea9f6d6342c4456d24ba28c0689ff",
185+
"hash": "c2f7617de3dc5711159ef098f8f7cc4f",
186186
"size": 16
187187
},
188188
"/static/pdfs/web_almanac_2024_en.pdf": {
189189
"date_published": "2025-03-03T00:00:00.000Z",
190190
"date_modified": "2026-01-17T00:00:00.000Z",
191-
"hash": "4a283552cf466422e552b4933bd6f01e",
191+
"hash": "dc27651b8d6ccb27cf9a24ad68654b01",
192192
"size": 17
193193
},
194194
"/static/pdfs/web_almanac_2024_en_cover_A5.pdf": {
195195
"date_published": "2025-03-03T00:00:00.000Z",
196196
"date_modified": "2026-01-17T00:00:00.000Z",
197-
"hash": "debdc026521ee2a888b7b2bf04c91531"
197+
"hash": "6209537dffdbd8a90a66826605db61db"
198198
},
199199
"/static/pdfs/web_almanac_2024_en_print_A5.pdf": {
200200
"date_published": "2025-03-03T00:00:00.000Z",
201201
"date_modified": "2026-01-17T00:00:00.000Z",
202-
"hash": "43b7e3ac441ae43bb0e5be70056766af",
202+
"hash": "9f6abbdc1c4239612df85ef7ded7f019",
203203
"size": 16
204204
},
205205
"/static/pdfs/web_almanac_2024_ja.pdf": {
206206
"date_published": "2025-07-18T00:00:00.000Z",
207207
"date_modified": "2026-01-17T00:00:00.000Z",
208-
"hash": "2bdd48b23823c8177dd4469be0177b48",
208+
"hash": "2bc5ad744ac795ff5a50de4af9fb4420",
209209
"size": 17
210210
},
211211
"/static/pdfs/web_almanac_2024_ja_cover_A5.pdf": {
212212
"date_published": "2025-07-18T00:00:00.000Z",
213213
"date_modified": "2026-01-17T00:00:00.000Z",
214-
"hash": "4de95dcbfc7c5705f24ecee8aae275b8"
214+
"hash": "af5e21debdab1c13d91975ba5cc32913"
215215
},
216216
"/static/pdfs/web_almanac_2024_ja_print_A5.pdf": {
217217
"date_published": "2025-07-18T00:00:00.000Z",
218218
"date_modified": "2026-01-17T00:00:00.000Z",
219-
"hash": "b13e74f9cf635b8452ab040f5cfd7163",
219+
"hash": "6337d7c6bed455ed045960cd55c6bf3c",
220220
"size": 17
221221
},
222222
"/static/pdfs/web_almanac_2025_en.pdf": {
223223
"date_published": "2026-01-15T00:00:00.000Z",
224224
"date_modified": "2026-01-17T00:00:00.000Z",
225-
"hash": "f63c6a92d0339572f20571785940b688",
225+
"hash": "142f0f154938e29ec310cae860fbf922",
226226
"size": 12
227227
},
228228
"/static/pdfs/web_almanac_2025_en_cover_A5.pdf": {
229229
"date_published": "2026-01-15T00:00:00.000Z",
230230
"date_modified": "2026-01-17T00:00:00.000Z",
231-
"hash": "f9f1c1cc5f257dbd08497f83cd778e20"
231+
"hash": "454533b986e8879def40c92b48ba901d"
232232
},
233233
"/static/pdfs/web_almanac_2025_en_print_A5.pdf": {
234234
"date_published": "2026-01-15T00:00:00.000Z",
235235
"date_modified": "2026-01-17T00:00:00.000Z",
236-
"hash": "d2b7380d4413e7a2b723f7e7ebc7fb36",
236+
"hash": "40abac5ac1976dff9604d9a8cca4169a",
237237
"size": 11
238238
},
239239
"en/2019/chapters/accessibility.html": {
@@ -949,7 +949,7 @@
949949
"en/2025/chapters/fonts.html": {
950950
"date_published": "2026-01-15T00:00:00.000Z",
951951
"date_modified": "2026-01-17T00:00:00.000Z",
952-
"hash": "5ad9db51bd42330098e2da425498faa2"
952+
"hash": "1ce1f97cf380430e05b4944666aab522"
953953
},
954954
"en/2025/chapters/generative-ai.html": {
955955
"date_published": "2026-01-15T00:00:00.000Z",

src/content/en/2025/fonts.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,11 @@ doi: 10.5281/zenodo.18246295
2424

2525
When the HTTP Archive first began gathering data on web typography in 2011, the use of custom web fonts was in the low single digits. Only about 3-5% of websites at the time delivered self-hosted fonts via `@font-face` or used services like Typekit, Fonts.com, or Google Web Fonts. Every other site in 2011 was limited to the small handful of "web-safe" system fonts (Arial, Courier, Times, etc.) that were available on every user's device.
2626

27-
Web fonts quickly rose to become the norm when designers realized that custom typography could distinguish their visual identity from other, more generic sites. By 2015, web fonts were used by over half of websites. They reached around 75% adoption by 2020.
27+
Web fonts quickly rose to become the norm when designers realized that custom typography could distinguish their visual identity from other, more generic sites. By 2015, web fonts were used by over half of websites. They reached around 75% adoption by 2020. Today, the question is less about whether a website uses web fonts, but rather which specific typefaces it displays and whether they use font features to display their full expressive potential.
2828

29-
Today, the question is less about whether a website uses web fonts, but rather which specific typefaces it displays and whether they use font features to display their full expressive potential.
29+
At the same time, font delivery methods have been shifting. An increasing number of sites are choosing to self-host their font files rather than relying exclusively on third-party CDNs, and many use a mix of both approaches. Last year's data showed a clear rise in exclusive self-hosting alongside a decline in sites that combined self-hosting with external services, and we investigate whether this trend continues in 2025.
3030

31-
At the same time, font delivery methods on the web have been shifting. An increasing number of sites are choosing to self-host their font files (serving fonts from their own servers) rather than relying exclusively on third-party CDNs. Many other sites use a mix of both approaches. Last year's data showed a clear rise in exclusive self-hosting alongside a decline in sites that combined self-hosting with external services, and we investigate if this trend continues in 2025.
32-
33-
We also look at font providers (is Google Fonts dominance continuing) as well as how fonts are being loaded onto sites, as well as which fonts are used in, how non-Latin languages are supported, as well as some newer, more advanced topics.
34-
35-
In short, web fonts are nearly universal on the web, but more sites are taking font delivery into their own hands instead of depending on an external provider. We explore these patterns and describe the current state of web typography in detail below.
31+
This chapter explores several dimensions of web typography today: which providers command the largest share, how fonts are loaded and optimized for speed, which typefaces lead in actual CSS implementations, how non-Latin scripts are handled, and what variable fonts and color fonts mean for the future of web typography.
3632

3733
## Webfont usage
3834

src/templates/en/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "Sustainability",
219-
"interoperability": "Interoperability"
219+
"interoperability": "Interoperability",
220+
"generative-ai": "Generative AI"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/es/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@
215215
"webassembly": "WebAssembly",
216216
"structured-data": "Structured Data",
217217
"sustainability": "Sustentabilidad",
218-
"interoperability": "Interoperabilidad"
218+
"interoperability": "Interoperabilidad",
219+
"generative-ai": "IA generativa"
219220
}
220221
%}
221222

src/templates/fr/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "Durabilité",
219-
"interoperability": "Interopérabilité"
219+
"interoperability": "Interopérabilité",
220+
"generative-ai": "IA générative"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/hi/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "वहनीयता",
219-
"interoperability": "इंटरोऑपरेबिलिटी"
219+
"interoperability": "इंटरोऑपरेबिलिटी",
220+
"generative-ai": "जनरेटिव एआई"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/it/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "Sostenibilità",
219-
"interoperability": "Interoperabilità"
219+
"interoperability": "Interoperabilità",
220+
"generative-ai": "IA generativa"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/ja/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "持続可能性",
219-
"interoperability": "相互運用性"
219+
"interoperability": "相互運用性",
220+
"generative-ai": "生成AI"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/nl/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "Duurzaamheid",
219-
"interoperability": "Interoperabiliteit"
219+
"interoperability": "Interoperabiliteit",
220+
"generative-ai": "Generatieve AI"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

src/templates/pt/base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@
216216
"webassembly": "WebAssembly",
217217
"structured-data": "Structured Data",
218218
"sustainability": "Sustentabilidade",
219-
"interoperability": "Interoperabilidade"
219+
"interoperability": "Interoperabilidade",
220+
"generative-ai": "IA generativa"
220221
}
221222
%}
222223
{% if (year == "2019" or year == "2020") %}

0 commit comments

Comments
 (0)