[HN Gopher] More than you ever wanted to know about font loading... ___________________________________________________________________ More than you ever wanted to know about font loading on the web (2021) Author : Brajeshwar Score : 110 points Date : 2022-06-09 13:14 UTC (9 hours ago) (HTM) web link (www.industrialempathy.com) (TXT) w3m dump (www.industrialempathy.com) | dingleberry420 wrote: | Alternatively, just stop messing with the font. It's not | necessary, annoys users and takes a lot of work to get right. | spread_love wrote: | Big hit to site identity though. Agreed it introduces issues, | but it's not realistic to think you'll convince Marketing to | drop all custom typefaces. Used responsibly, they can improve a | site's appearance without hindering UX. | bilater wrote: | That's like saying everyone should dress in plain clothes and | not waste money on fancy shit. I mean sure...but also not | really a viable solution. | lelandfe wrote: | I know HN can be pretty utilitarian at times, but custom fonts | are nice. The New Yorker simply would not be The New Yorker | without their font stack. | | It's not that hard to get right (seriously, it should take | _maybe_ an hour?) and won 't need to be touched ever again once | you have it in good shape :) | azemetre wrote: | If you don't use custom fonts and strictly system fonts, you | get a lot of performance benefits; which may seem minor, but | multiple this by tens of millions of people and you're | talking about a real world climate impact here. | | If the choice is between style vs performance, we should | always default toward performance. Besides many OS's have | added more system fonts throughout the last two decades. If | anything we need to encourage OS's to have more interfont | operability (if that's a word), I don't know the legal | ramifications (there's gotta be one) but there's no reason | why the most popular google fonts couldn't be included in | various OS's. | | Obviously I'm not an OS dev, so I'm curious if the | limitations are purely legal or implementation. | lelandfe wrote: | Browsers are actually going the opposite way now, and are | locking down access to system fonts beyond a standardized | list: https://wicg.github.io/local-font-access/ | | This is to prevent fingerprinting of users (adding _new_ | browser-accessible fonts would sadly mean more accurate | fingerprinting) | xigoi wrote: | I'm wondering, would it be possible to add a mechanism | that would allow JavaScript to get information like the | list of fonts, but make it impossible to send it | anywhere? Have the list wrapped in some special type that | infests everything it touches and things that perform | requests will refuse to send it. | azemetre wrote: | Wow, I had no idea. Thanks for the info but this is | beyond disappointing. | PaulHoule wrote: | I've wondered if Cumulative Layout Shift is more of a feature | than a bug. | | All the time I try to click on something, the layout shifts, and | I wind up clicking on an ad. Maybe that's how Google can get $50B | a year in ad revenue but you can't find anybody who admits | they've clicked on an ad. | nonameiguess wrote: | Fat-fingering links on a touchscreen that you have to touch to | scroll is likely at least as big a factor, but I would hope the | ad network is able to measure whether a person actually stays | on the page versus immediately hits the back button and not pay | for the immediate back buttons. | egberts1 wrote: | Yes. This is a problem when trying to speed clicking NEXT | button, it shifted and it's "AD TIME!" | | I am looking at you, Taboola. | lowercased wrote: | agreed, but i've found it easier/safer to just back out of | sites when I see taboola stuff on them in the first place. it | seems to be an indicator of the (non)quality of many sites. | jfk13 wrote: | In my experience, if you're reading something that involves | constantly clicking a NEXT button, you're generally reading | garbage anyhow. | chrismorgan wrote: | There are various other CSS properties that are linked to the | font so that the result is bad if another font gets used. | | letter-spacing: this has been giving me grief recently. It's | mostly a tool for people second-guessing the font designer | because they chose a font that they liked but didn't _actually_ | like because it was too wide, and now they're tightening the | letter-spacing, but poor people like me who have told their | browser not to let pages override their font choices1, or those | for whom the web font just fails to load for whatever reason, now | have to suffer for it, surprisingly often to the point where | letters collide (not _often_ in the scheme of things, but | surprisingly often to me). My opinion is that you should | _absolutely never_ adjust letter-spacing at body text sizes, with | the sole exception of all-caps text where it is generally | desirable to add up to about 0.05em. If you feel the need to set | letter-spacing on body text in any other situation, you're using | the wrong font. | | font-feature-settings: some OpenType features are generic, like | _tnum_ for tabular numbers, but others like stylistic sets are | explicitly linked to a particular font, so that if you set this | globally in this way, you might actually trigger something in | another font that ruins things. For example, my monospace is | Triplicate, and _ss01_ makes it not monospaced (called the Poly | variant), so if you activate ss01 _and_ were doing box drawing or | similar, it just got ruined. Or if you're using a version of | panr's Terminal theme2 for Hugo from more than a few months ago | (when it got fixed for the wrong reasons, but it got fixed), it | has the _case_ feature set improperly, which is supposed to just | adjust vertical positioning of some punctuation to fit all-caps | text, but in practice a number of font foundries (including at | least one of the biggest) have decided to work around inferior | desktop publishing software (leastways, that's why Matthew | Butterick decided to do it) by making that feature also | substitute uppercase glyphs--so now the entire page is all caps. | | The particularly galling part to me is that there actually _is_ a | defined way of doing this properly for font-feature-settings, | scoping by font, but Firefox implemented it in 2014 and no one | else has touched it. Sigh. /* The current and | inferior way: */ code { font-family: triplicate, | monospace; font-feature-settings: "ss01"; } | /* The new and improved way that Google and Apple haven't | implemented: */ @font-feature-values triplicate { | @styleset { poly: 1; } } | code { font-face: triplicate, monospace; | font-variant-alternates: styleset(poly); } | | I'd really like something better for letter-spacing, too. Maybe a | letter-spacing-adjust @font-face property or something. I dunno. | | --***-- | | 1 I started doing this a few months back in Firefox as an | experiment, and I've never gone back--it _significantly_ improves | the web, with Google's Material Icons web font with its stupid | ligation technique being practically the only meaningful | casualty. | | 2 Which I hate, by the way--monospaced fonts are generally quite | bad for long-form reading, and are still more so when presented | light-on-dark and with excessively wide columns. Do you know just | _how much_ more readable those sorts of pages become when you | swap in a serif or sans-serif font? Try reading half an article, | then swap it and go away for a few minutes so that it doesn't | feel weird, then come back and read the rest. The effect is quite | remarkable. | clairity wrote: | it's frustrating to see the most relevant and informative | comment at the bottom while tangential blathering sits at the | top. | | thanks for pointing out that css font settings can be scoped to | fonts, even if it's firefox only for now. | wildrhythms wrote: | I am usually forced to apply some 0.2px or 0.3px letter spacing | because the designers I work with don't realize that their | design software renders fonts completely differently than the | browser, and that added letter spacing in the browser makes it | 'look right' to them. | madeofpalk wrote: | I have never encountered this. What OS/design software does | this? | [deleted] | missblit wrote: | > browsers no longer cache resources across top level sites. | | Wait is this true? Definitely warrants some kind of citation. If | no one's heard one way or another I might test it later because | I'm pretty skeptical of this claim. | | Edit: mind blown | robin_reala wrote: | The reasoning behind this is a privacy leak attack. Let's say | that you know that, say, your competitor is loading a specific | asset at a specific version from a CDN. You can then attempt to | load that asset as well, and using the Resource Timing API[1] | see how long it takes to come down. If it's 500ms+ you can | guess that it's a network load. If a lower number you could | guess that instead it's come from the cache. You could then | target that user with that new knowledge. Safari realised this | a long time ago, but it took Firefox and Chrome a while to | catch up, or at least to decide that the harm outweighed the | benefit. | | [1] https://developer.mozilla.org/en- | US/docs/Web/API/Resource_Ti... | bombcar wrote: | It's true and kind of asinine in my opinion, and actually makes | setting up a Squid cache worthwhile again, potentially. | beejiu wrote: | Yes, it seems like it is now true. | https://developer.chrome.com/blog/http-cache-partitioning/ | kube-system wrote: | https://developer.chrome.com/blog/http-cache-partitioning/ | zinekeller wrote: | Yes, all modern browsers divide their cache per-site. Some | large advertising companies like Taboola have abused caches to | store unique identifiers. I won't be shocked if Google and | Facebook have also used this, so Safari (from 2013, | https://bugs.webkit.org/show_bug.cgi?id=110269), Firefox | (depending on settings from 2018 and widely deployed in 2020, | https://developer.mozilla.org/en- | US/docs/Web/Privacy/State_P...) and Chrome (from 2020, | https://developer.chrome.com/blog/http-cache-partitioning/) now | separate caches. | everdrive wrote: | I wonder if there is some way to always block remote fonts? Seems | like a real bandwidth saver. | bobbylarrybobby wrote: | Some adblockers can do this. | sogen wrote: | In Chrome, uBlock origin can block webfonts. | chrismorgan wrote: | Be sure to block JavaScript as well. Makes the web a lot | faster, and very often better too, with only the occasional | site (though considerably more of certain _types_ of sites) | breaking. What I settled on a couple of years back was to | disable JavaScript with uMatrix, but have that extension | disabled in Private Browsing mode, so I can just open a Private | Browsing window if I want to run something with JS. | | In Firefox, you also just have the "Allow pages to choose their | own fonts, instead of your selections above" checkbox in | Settings - Fonts - Advanced that you can untick, which will | stop most web fonts from loading, though Private Use Area code | points (used in icon fonts) will still work from web fonts (so | that Google's Material Icons with its stupid ligation technique | is just about the only thing that will be mangled). | mmmpop wrote: | > only the occasional site (though considerably more of | certain types of sites) breaking. | | That is not at all my experience while browsing without JS | enabled. | ormax3 wrote: | uBlock Origin can: https://github.com/gorhill/uBlock/wiki/Per- | site-switches#no-... | forgotmypw17 wrote: | It can be done in Firefox, it is just one setting in | about:config. | | gfx.downloadable_fonts.enabled | | Some sites rely on icon fonts for buttons, and they appear as | Unicode placeholders instead. I don't mind, and consider it a | time-saving benefit which reduces my effort spent on low- | quality websites. | kuharich wrote: | Past comments: https://news.ycombinator.com/item?id=25976844 | lelandfe wrote: | And today's discussion, where this came from: | https://news.ycombinator.com/item?id=31680414 ___________________________________________________________________ (page generated 2022-06-09 23:01 UTC)