Commit e69f588
committed
fix: stop icons resolving twice when the fonts come from a Kit or CDN
Core compiles in the bundled FontAwesome Free stylesheets whichever icon
source a forum has configured. Two of them bind the classic family to the
bundled font at `:root`, and a Kit or a Pro CDN sets that same variable from
a stylesheet that can only arrive later — so every icon on the page is
resolved once against the bundled font and then again against the remote
one. The second pass is what readers have been seeing as the icons
flickering shortly after the page appears.
Only the two font bindings are withheld now, and only when the fonts are
not local. The glyph definitions stay: they say which character an icon is,
name no font, and are the same whichever source supplies one. Brands stay
too, since they bind their own family and so never compete with a Kit's.
Withholding them is not sufficient on its own, because the glyph
definitions reach their font through a chain that ends in a hardcoded
`'Font Awesome 7 Free'` — a fallback that belongs to FontAwesome, not to us,
and that wins as soon as nothing else in the chain is set. Remote sources
therefore rebuild the bridge from that chain to the classic family and give
the family a name no browser can resolve. Icons draw nothing at all until
the real font arrives, keeping their box so that nothing moves when the
glyphs appear: briefly absent rather than briefly wrong.
A forum can also name a CDN or Kit and give no URL for it. That source can
deliver nothing, so the bundled fonts are all it has and they are kept —
reading such a forum as remote would leave it with no icons whatsoever
rather than with icons that arrive late.
Two smaller things while in here. The CDN stylesheet no longer carries a
`<noscript>` counterpart: icons are rendered by the SPA, so a browser with
scripting off has no icon elements on the page for it to style, and the
fallback only ever bought such a browser an extra request. And the forced
style help text now says outright that the bundled icons are Free, which
covers only a few hundred icons outside the solid style, so forcing another
style on them leaves most icons blank.1 parent af3ee0d commit e69f588
7 files changed
Lines changed: 447 additions & 12 deletions
File tree
- framework/core
- less/common
- locale
- src
- Foundation
- Frontend
- tests
- integration/frontend
- unit/Foundation
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
1 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
2 | 8 | | |
3 | | - | |
4 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
5 | 59 | | |
6 | 60 | | |
7 | 61 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
69 | 98 | | |
70 | 99 | | |
71 | 100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
| |||
247 | 249 | | |
248 | 250 | | |
249 | 251 | | |
250 | | - | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
251 | 262 | | |
252 | 263 | | |
253 | 264 | | |
| |||
Lines changed: 6 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
73 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
| |||
164 | 166 | | |
165 | 167 | | |
166 | 168 | | |
167 | | - | |
168 | | - | |
| 169 | + | |
| 170 | + | |
169 | 171 | | |
170 | 172 | | |
171 | 173 | | |
| |||
0 commit comments