[HN Gopher] Show HN: Modern Font Stacks - New system font stack ...
       ___________________________________________________________________
        
       Show HN: Modern Font Stacks - New system font stack CSS for modern
       OSs
        
       Author : danklammer
       Score  : 164 points
       Date   : 2023-03-14 12:24 UTC (1 days ago)
        
 (HTM) web link (modernfontstacks.com)
 (TXT) w3m dump (modernfontstacks.com)
        
       | ikesau wrote:
       | Super. Will keep this in mind for future projects.
       | 
       | Is there a way to get a sense for how well supported each font is
       | at each level? Like caniuse.com - "80% of users will see Cambria"
       | or whatever.
        
         | VPenkov wrote:
         | Sort of but not really. Operating systems usually come with a
         | mostly-known set of fonts, however major updates sometimes
         | change or iterate on fonts. Also, installing certain Office
         | and/or design software adds more fonts. But this is why people
         | use such lengthy font stacks that look alike.
        
         | [deleted]
        
       | andrewmcwatters wrote:
       | It seems blatantly wrong to me that anything other than
       | traditional or old style typography would use lower case numbers.
       | 
       | Who are these people designing typefaces in the neo-grotesk
       | family with old style numerics?
        
         | adamc wrote:
         | What are "lower case numbers"?
        
           | vanderZwan wrote:
           | I presume numbers with the top aligned with the x-height[0].
           | Corbel and Candara both have them if you look at the
           | screenshots on the GH page[1].
           | 
           | [0] https://en.wikipedia.org/wiki/X-height
           | 
           | [1] https://github.com/system-fonts/modern-font-
           | stacks#classical...
        
           | latexr wrote:
           | Numbers with varying heights, ascenders, and descenders (like
           | lowercase letters).
           | 
           | https://en.wikipedia.org/wiki/Text_figures
        
         | vanderZwan wrote:
         | I don't see any lower-case numbers on neo-grotesk, nor do any
         | of the screenshots on the GH page show it so it's not just my
         | machine. Could you maybe have an incomplete font with some
         | weird font-substitution quirks?
         | 
         | [0] https://github.com/system-fonts/modern-font-stacks#neo-
         | grote...
        
         | crazygringo wrote:
         | Lower case numbers fit in the best with body text. They're used
         | in the same way small caps are used for acronyms -- so you
         | don't get ugly blocks of characters larger than their neighbors
         | that call attention to themselves. It's a feature, not a bug.
         | 
         | In contrast, you use standard numerals for mathematics,
         | spreadsheets, next to uppercase letters, etc. Anywhere where
         | the context is numerical or technical or calling attention.
         | 
         | There's nothing "blatantly wrong" about it. Ultimately it's a
         | stylistic choice (most people don't bother, same as most people
         | don't bother with small caps), but it's a really nice one. I
         | think it's cool to see it in neo-grotesque personally.
         | 
         | There's nothing inherent to the aesthetic principles of sans-
         | serif that precludes them. From my understanding, the
         | historical reason why they weren't used in the mid 1900's was
         | for technical reasons with phototypesetting, needing to limit
         | the character set. Now that it's all digital and Unicode we're
         | able to repopularize them.
        
           | andrewmcwatters wrote:
           | No, but there is historical precedence and coherence. It's
           | like putting Greek columns on a Walmart. Or rapping in Old
           | English.
           | 
           | There's "nothing inherent to the aesthetic principles" of
           | rotary phones, but you don't use a smart phone with a rotary
           | phone interface do you?
           | 
           | Taste is formed with the times in which they are developed
           | in. And there are those who have taste coherence and those
           | who do not.
           | 
           | "Nothing inherent to the aesthetic principles" of emo hair
           | fringe or disco attire, but you wouldn't wear either to a
           | historical reenactment of the American Civil War, either.
           | 
           | When people use Humanist typography they are invoking a
           | specific feel.
        
             | crazygringo wrote:
             | I guess I just find myself disagreeing. I don't find
             | lowercase numerals any different from extending a Latin
             | font to Cyrillic or Greek. In my view, they're just extra
             | characters, rather than an aesthetic choice of the font.
             | Ideally, good body text fonts will have both types of
             | numerals to choose from.
        
               | andrewmcwatters wrote:
               | I think it's just OK to disagree. But among designers, it
               | does standout. It's like whitewalls on a contemporary
               | supercar.
               | 
               | But you know what, there are plenty of out of place
               | things that can still just be appealing sometimes. /shrug
        
         | JonathonW wrote:
         | Microsoft's font designers, apparently. (Corbel and Candara
         | both have them, despite it being kind of weird for a sans-serif
         | font-- those were MS-commissioned fonts launched as part of the
         | ClearType Font Collection with Windows Vista and Office 2007.)
         | 
         | None of the fonts here have lowercase figures by default on
         | Mac.
         | 
         | (If Neo-Grotesque is showing lowercase figures on your machine,
         | I think something funky is going on with your font stack--
         | pretty sure none of those fonts should have them by default.)
        
         | olah_1 wrote:
         | Old style numerals are my favorite actually.
         | 
         | There aren't that many descenders in lowercase English, but in
         | a script like Shavian where there are many, the old style
         | figures feel really "at home".
        
       | yowzadave wrote:
       | It would be nice if there were a convenient way to test the way
       | these fonts will render on a variety of different systems. I.e.,
       | BrowserStack but you can specify the installed fonts on the
       | system you are testing.
        
         | noneeeed wrote:
         | The repo actually has png/gif comparisons for them.
         | https://github.com/system-fonts/modern-font-stacks#industria...
         | 
         | But yeah, I'd love some way to preview a custom piece of text.
        
       | nati0n wrote:
       | Limitations based on copyrights significantly hinder the
       | helpfulness of this site, although the design is top notch.
        
         | hobofan wrote:
         | What do you mean? This only includes fonts already present as
         | standard font on the operating system, so presumably they are
         | all permissively licensed.
         | 
         | Either way, you as the website owner are not responsible for
         | whatever font ends up being chosen by the browser to render the
         | website.
        
       | ar9av wrote:
       | Love this! I've been using system fonts for the past couple years
       | to avoid the usual font load glitch, and also to make the apps
       | feel a little bit more at home for users that are used to their
       | OS fonts. For mobile, this seems like the ideal scenario.
        
       | aimor wrote:
       | That dot background causes a distracting strobing effect when I
       | scroll.
        
       | corywatilo wrote:
       | This is really well done. Paragraph view really helps to
       | visualize it.
       | 
       | CSS Font Stack [1] used to be the place for this, but that site
       | hasn't changed in decades.
       | 
       | The one piece missing for me is the percentage adoption by
       | platform (like in the above referenced site). Regardless, this is
       | still replacing CSS Font Stack for me.
       | 
       | The irony is that they were both created by people named Dan.
       | 
       | [1] https://www.cssfontstack.com
        
         | wbobeirne wrote:
         | Came here to post this as well. I was going to start making a
         | replacement for cssfontstack, so I'm glad to see this here. But
         | also feel that the percentage adoption was a huge value to me,
         | as it helped me prioritize fonts in my chosen stack to maximize
         | consistency. I'd love to see stats that include popular mobile
         | OS's as well.
        
       | starik36 wrote:
       | This is awesome. One improvement would be to have a preview of
       | what it looks like on the all the major OSes. Bonus for mixing in
       | non-English versions of the OSes.
        
         | conaclos wrote:
         | A preview is available on the GitHub README [0]
         | 
         | [0] https://github.com/system-fonts/modern-font-stacks#system-
         | ui
        
       | FooBarWidget wrote:
       | I don't get it. Why not just use "serif", "sans-serif" and
       | "monospace"? What's the value of specifying specific fonts such
       | as "Charter" or "Dejavu Sans"?
        
       | danielvaughn wrote:
       | Just wanted to say that I love the dot-pattern background. Very
       | subtle, nicely done.
        
       | wiradikusuma wrote:
       | Sorry I don't understand how to use this?
       | 
       | Is the _website_ supposed to be like Google Fonts _website_ where
       | I select a font and it will give me code snippets to paste in my
       | HTML?
        
         | tomhanlon wrote:
         | Instead of loading a font from Google Fonts you would just use
         | the font-family property for the given typeface:
         | font-family: Charter, 'Bitstream Charter', 'Sitka Text',
         | Cambria, serif;
         | 
         | for instance.
        
         | anamexis wrote:
         | I think it's suggesting font families which have similar
         | characteristics and for which at least one is likely to be
         | installed for a given OS/browser.
        
       | aakash_test wrote:
       | Test
        
       | pimlottc wrote:
       | Please stop using green vs red like this, it's very difficult for
       | many people, including me. Especially for thin lines.
        
         | coreyp_1 wrote:
         | I didn't even realize that the red/green was present until you
         | mentioned it!
         | 
         | I do actually perceive it, now that you draw attention to its
         | existence, and can tell the difference, but you are correct:
         | thin lines are aggravating to deal with!
         | 
         | And it's not just the red/green issue: it's also in
         | distinguishing them from grey when the lines are thin.
         | 
         | Side issue: when I was a kid, my math teacher insisted on
         | grading using those thin BIC red pens. The problem is that it
         | was indistinguishable from my own writing (at a glance), and it
         | took forever to find my mistakes that were "clearly marked" by
         | the teacher. Thin red lines are pointless to me. I guess it's a
         | good thing that I'm naturally good at math!
        
           | gketuma wrote:
           | So is the fix to remove the underlines? Or to stop using
           | red/green color combination? Trying to learn as well. Thanks
        
             | capableweb wrote:
             | Depends on the use case. If you want to signal deletion,
             | strikethrough can be more appropriate than coloring. If you
             | really have to use color, I've heard brown-blue combo
             | should be easier, or at least blue-yellow color blindness
             | is a lot rarer than red-green, so it'll be more accessible.
             | 
             | But the most accessible would be to use appropriate
             | structure (together with appropriate semantic structure for
             | those that cannot see at all) rather than appropriate
             | coloring.
        
             | heisenbit wrote:
             | Make color areas bigger and use higher contrast light/dark
             | versions to keep some distance between red and green.
             | Generally avoid thin red to signal anything important.
        
             | yuchi wrote:
             | The solution from literature is "use color as much as you
             | want (within the limits of sufficient contrast for
             | readability) but nether rely exclusively on it, always add
             | some other visual device, such as icons or (even better)
             | textual additions".
        
             | [deleted]
        
             | coreyp_1 wrote:
             | For me, it's not just an "underline" issue. In my case,
             | it's a "thin line" issue, and letters are usually made up
             | of thin lines, especially the monospace font used here. But
             | that's just me. (Side note: I still use monospace fonts in
             | programming, I just choose one that has thicker lines in
             | relation to the character size.)
             | 
             | For example, when I saw the website in question, I did not
             | notice the red or green text color at all. I did see the
             | underline, though. I didn't know it's significance,
             | however, because the key is at the bottom of the examples
             | (5 rows of blocks of text examples) rather than the top.
             | Oddly enough, in this particular instance, the green of the
             | text looks more like a light grey, and I can see the red
             | better than the green. Normally it's the other way around,
             | but it might have something to do with the particular
             | shades involved.
             | 
             | Importantly, there are different forms of red/green
             | colorblindness. For some people, the colors are literally
             | indistinguishable. They look exactly the same.
             | 
             | Mine is a form of reduced sensitivity. I can see it if it's
             | a large area. E.g., if you're wearing a red shirt, then I
             | know it's red, and it looks completely different from a
             | green shirt. If it's just a thin line of red, though, then
             | I might not pick up on it unless I concentrate. It just
             | doesn't stand out when the lines are thin.
             | 
             | Fabric can be weird for me. Some fabrics cause issue
             | because they will use red threads interspersed throughout
             | the cloth in order to achieve a red/pinkish overtone, and I
             | won't notice it at all (unless I really concentrate on it).
             | It's because the red is coming from thin lines. I have to
             | be careful with tweed, for example.
             | 
             | But again, that's just my experience.
        
               | messe wrote:
               | I have the same kind (IIRC it's called deuteranomaly).
               | 
               | I find increasing the brightness of the display helps,
               | but it's still a pain in the arse to distinguish the two
               | when the lines are thin in this example.
               | 
               | Just for fun, can you make out the lettering in this
               | image posted to the fediverse:
               | https://mathstodon.xyz/@csk/109786201604517074
               | 
               | If you have deuteranopia or deuteranomaly, you should be
               | able to just about make it out. With normal colour
               | vision, on the other hand, it's meant to be nearly
               | impossible to see.
        
               | coreyp_1 wrote:
               | LOL, that's great!
        
               | illiarian wrote:
               | > because the key is at the bottom of the examples (5
               | rows of blocks of text examples) rather than the top.
               | 
               | It's worse in mobile. It's several screens of example
               | blocks before you get to the key.
        
             | MisterTea wrote:
             | The fix is "designers" need to understand that there are
             | people with visual disabilities and take steps to stop
             | discriminating against them.
        
         | 323 wrote:
         | Maybe a browser extension should exists which automatically
         | replaces colors with more accessible ones.
        
           | nielsbot wrote:
           | I think you can do this with system accessibility settings?
           | At least on macOS and iOS.
        
         | Pr0ject217 wrote:
         | 100%. I can _barely_ read it. Perhaps changing the _background_
         | of the text to red and green (and the text to white) would
         | improve its legibility. There are likely better ideas, though!
        
         | danklammer wrote:
         | This is great feedback. I will update to be more accessible.
        
           | peterfirefly wrote:
           | You might be able to get away with changing your reds and
           | greens so (most) colour blind people can see the difference
           | between them.
        
           | scns wrote:
           | https://colorhexa.com shows how each color "is perceived by
           | people affected by a color vision deficiency".
        
           | Matheus28 wrote:
           | You could add a strikethrough on the red ones, and keep the
           | color.                   .nope { text-decoration: line-
           | through; }
        
         | nielsbot wrote:
         | Someone filed an issue already https://github.com/system-
         | fonts/modern-font-stacks/issues/1
        
       | Narushia wrote:
       | These look all very solid! There's one thing that bugs me,
       | though: I would imagine that a "system font _stack_ " would
       | support characters for multiple scripts, since operating systems
       | are commonly localised into many different languages. However,
       | none of the fonts presented seem to support any CJK characters,
       | for instance.
        
       | amelius wrote:
       | It would be even better if the fonts were just the same across
       | platforms.
        
         | yowzadave wrote:
         | What if you're building a web app, and your goal is to emulate
         | the system font appearance (whatever it may be) of the client?
        
           | tasuki wrote:
           | I think the comment you're replying to still applies?
        
           | SquareWheel wrote:
           | Then your default font stack should look something like this.
           | 
           | https://github.com/twbs/bootstrap/blob/adf7b8dc4083b6ddc318e.
           | ..
        
       | airstrike wrote:
       | Not sure if it's just me behind a draconian firewall but Neo-
       | Grotesque doesn't load Inter for me, even though it's on Google
       | Fonts. Why not download it from there?
        
         | joe5150 wrote:
         | The site doesn't load any webfonts. It only attempts to use
         | already-installed "default" fonts from various systems. The
         | GitHub readme[1] says Inter is a "user-installed" font, so I'm
         | not really sure it should count here.
         | 
         | 1: https://github.com/system-fonts/modern-font-stacks#neo-
         | grote...
        
           | hLineVsLineH wrote:
           | Inter is the default font on elementary OS, if I recall
           | correctly.
        
           | airstrike wrote:
           | Sure, but realistically who doesn't deploy webfonts these
           | days? Might as well include them on this site to reflect the
           | current state of the world
        
       | prewett wrote:
       | Maybe I should know what this is about, but after reading the web
       | page and the Github site, it's unclear to me if this is a set of
       | fonts I download, or a useful set of font CSS settings, or a font
       | renderer or what. What problem is this solving? Why does this
       | work better than just using good quality fonts in the browser?
       | The examples look great, I just don't know what I'm looking at.
        
         | [deleted]
        
         | nielsbot wrote:
         | I think these are fonts that are generally available on common
         | OSes, so no webfonts needed, in order of
         | preference/specificity. You often (for me, an amateur, anyway)
         | don't know which list of fonts and fallbacks ("stack") to
         | specify if you want a "industrial" font for example. This site
         | has done that research for you.
        
       | [deleted]
        
       | azatom wrote:
       | Why is the smallest font size is the largest of what I actually
       | would like to test? The range 0.7-1.5em is what needs tests,
       | above that all looks good.
        
       | hypertexthero wrote:
       | Excellent work, and thank you for introducing me to the lovely
       | Seravek - https://en.wikipedia.org/wiki/Seravek
       | 
       | I did not know it was a default font in macOS.
        
       | DyslexicAtheist wrote:
       | very nice. been looking at the "system-ui" font saying "damn that
       | looks great I must try it", then as I continued to browse further
       | down got confused. Why does every font look the same? It must be
       | my design-ignorant brain not picking up on the subtle differences
       | in these fonts? They're clearly brilliant though.
       | 
       | as I couldn't spot any differences in any of them (and all of
       | them looking fantastic and really similar or same as the rest of
       | my system) ...
       | 
       | Then it hit me, so went to                 Firefox ->
       | settings ->              Fonts ->                 Advanced ->
       | "Allow pages to choose their own fonts, instead of your
       | selections above"
       | 
       | problem solved :) I was no longer staring at "DejaVu Sans" in
       | every box.
        
       | foxandmouse wrote:
       | Most of the fonts listed here are premium fonts, the complete DIN
       | typeset costs nearly 2k. If we're going that route, then it's
       | safe to say most of these are lesser than the best in class for
       | each category. popular fonts like Futura, Century Gothic,
       | Baskerville, and Univers are just a few that are omitted..
       | 
       | While there's no objective truth in design, these fonts are not
       | suitable for designers who prioritize typography. However, if
       | you're looking for a quick solution for a side project and don't
       | care much about typography, this list could be helpful. Can't see
       | why it belongs on the front page though.
        
         | joe5150 wrote:
         | The type named, DIN Alternate, is included with MacOS (bold and
         | condensed bold only). The GitHub page has some notes about
         | this, along with more info about what systems support which
         | typefaces.
         | 
         | https://github.com/system-fonts/modern-font-
         | stacks#industria....
        
           | foxandmouse wrote:
           | Thanks! the GitHub page includes a lot of (imo) essential
           | information that should be included on the site. The
           | developer clearly did a lot more research than I assumed.
           | 
           | That said, one thing to consider if you're using this stack
           | is that this implementation will produce OS specific designs.
           | The fonts in each stack differ significantly between
           | operating systems, which means that testing for each OS will
           | be necessary. I already have an issue with the same fonts
           | looking different due to different rendering methods in each
           | browser/ OS.
        
             | joe5150 wrote:
             | I think it's helpful to keep in mind that any design will
             | be to some extent "OS-specific" for a lot of different
             | reasons, available fonts being only one factor.
             | 
             | I also think OS-specific design is perfectly appropriate
             | for a lot of use cases. I use "font-family: system-ui,
             | sans-serif" on my resume page, for example, because I know
             | that the default system fonts look fine (by design) on any
             | screen and a fast, lightweight page is more important to me
             | than a specific font presentation. If you're creating a
             | user interface with really tight tolerances on element size
             | or appearance, different strategies might be more
             | appropriate.
        
               | hLineVsLineH wrote:
               | > I use "font-family: system-ui, sans-serif" on my resume
               | page [...] If you're creating a user interface with
               | really tight tolerances on element size or appearance,
               | different strategies might be more appropriate.
               | 
               | Shouldn't it be the opposite? It literally has "UI" in
               | the name, and according to the the spec, "The purpose of
               | system-ui is to allow web content to integrate with the
               | look and feel of the native OS."
               | 
               | The text on a resume is not UI, and it has no need to fit
               | the look and feel of the native OS. In this case you
               | should just use `serif` or `sans-serif`. If you're
               | creating a user interface, then it would be appropriate
               | to use `system-ui`.
        
               | joe5150 wrote:
               | > The text on a resume is not UI, and it has no need to
               | fit the look and feel of the native OS
               | 
               | My resume has no need to look any particular way at all;
               | this is just my preference. You should design your
               | webpages however you like!
        
               | jfk13 wrote:
               | You may happen to like how system-ui looks on _your_
               | system (macOS? Windows?); but do you have any idea what
               | it looks like for the person reading your resume, perhaps
               | on Linux with a custom theme, or on an Android device
               | where the vendor chose to ship some brand-specific UI
               | font? Or on a 5-yr old version of the OS, or on the
               | version that 'll be current 5 years in the future?
               | 
               | IMO system-ui is hardly ever a wise choice for content.
        
         | deckard1 wrote:
         | I'm going to be slightly more blunt and say, if you're using a
         | font "stack" then you don't care about typography at all. A
         | large segment of HN seems to hate web fonts with a passion. And
         | I get that. But let's not pretend you can have your cake and
         | eat it too. You may as well just do "serif" or "sans-serif" and
         | be done with it.
         | 
         | For the same amount of effort it takes to research a font stack
         | you could implement a web font loader that uses browser fonts
         | based on prefers-reduced-motion.
        
           | jraph wrote:
           | > if you're using a font "stack" then you don't care about
           | typography at all
           | 
           | Why?
           | 
           | If I want to display a document with some atmosphere for
           | which several fonts could be suitable, and it's not so
           | important if a default generic font is used, but I care more
           | about performance and resource usage, it's a good solution,
           | no?
           | 
           | The default generic font will probably be a well designed
           | font that the user is used to, so, typographically, it's very
           | good. I like this "best effort" approach.
           | 
           | A custom font will probably be worse for many users: users
           | have to download it, there can be flashes, reflows, rerenders
           | or a long time where stuff is blank, and the user might not
           | be familiar with this font. Since fonts are mostly a matter
           | of taste anyway, it's not clear the user will prefer this
           | custom font over the ones that are already on their computer
           | and that they are more likely to be familiar with.
           | 
           | So, in the end, it might as well be the better solution,
           | typographically speaking.
        
             | deckard1 wrote:
             | > that the user is used to
             | 
             | That's not the point of typography or design. People are
             | used to Comic Sans. That doesn't make it a good choice.
             | Some designs call for something that stands out in a unique
             | way.
             | 
             | If you are going to the trouble of finding an "atmosphere"
             | for your site and researching the fonts you are using then
             | why just throw that all out with a "stack" and sort of kind
             | of but not really getting it right?
             | 
             | Here's the bigger problem. No two fonts have the same font
             | metrics. Go to the Github page: https://github.com/system-
             | fonts/modern-font-stacks#css-font-.... These fonts are all
             | using the same font size, weight, etc. but they are
             | drastically different. Calibri and DejaVu do not render
             | remotely the same. DejaVu might be readable at a certain
             | size where Gill Sans Nova is going to be rather awful.
             | These are all within the same font stack. Even in the
             | "Preview Rendering" you can see it cheated by having the
             | footnote that says "These fonts have been size-adjusted for
             | easier comparison." How are you planning to do that in CSS?
             | You can't.
             | 
             | All this effort is wasted. You can just pick "sans-serif"
             | and let the user use whatever they have set in the browser.
             | That's better anyway, especially for a blog type layout
             | which is the only layout that would make sense and not
             | completely break with a font stack.
        
             | hLineVsLineH wrote:
             | The say, "then you don't care about typography at all." You
             | say, "If [...] it's not so important [...]" To me, it
             | sounds like you two are in agreement. If it's not
             | important, i.e. if you don't care about it, then it's fine.
             | 
             | > If I want to display a document with some atmosphere for
             | which several fonts could be suitable
             | 
             | There's no such thing as "several fonts could be suitable".
             | All the fonts in these stacks have different metrics, so
             | you can't even set appropriate values for something as
             | basic as the font size and line spacing.
             | 
             | If you design your page using Gill Sans Nova, for example,
             | and someone views it with DejaVu Sans -- congratulations,
             | the text now looks something like 50% bigger than you
             | intend it to be. And if you set a sensible size for DejaVu
             | Sans, someone will get unreadable text with some other
             | font. This is not "very good". It's bad.
             | 
             | It _might_ be okay to use these font stacks as fallback
             | when the custom font doesn 't work, but it's not "the
             | better solution" if you care about typography.
             | 
             | > I care more about performance and resource usage
             | 
             | It's a valid concern but fonts aren't really that big. Some
             | people are shipping favicons that are like 40kB. That's
             | enough to fit a font.
             | 
             | > The default generic font will probably be a well designed
             | font that the user is used to
             | 
             | System fonts aren't necessarily well designed. And I'm not
             | sure why "the user is used to it" is a good thing. It seems
             | to be the opposite. People complain when a font is familiar
             | to the point that it feels tired and overused.
             | 
             | > Since fonts are mostly a matter of taste anyway, it's not
             | clear the user will prefer this custom font
             | 
             | The user is always in control. They can always choose what
             | to load and what styles to apply. That doesn't mean people
             | should stop designing webpages that looks good.
        
               | joe5150 wrote:
               | > congratulations, the text now looks something like 50%
               | bigger than you intend it to be
               | 
               | Some of these "stacks" do make poor choices with respect
               | to matching the overall metrics of the fonts, but there
               | are any number of reasons why a font might display bigger
               | or smaller than you "intend it to be" in a web browser.
               | Web design fundamentally has to account for this.
        
               | hLineVsLineH wrote:
               | Yes, and that's exactly the problem with this approach.
               | There's no accounting for the different metrics of the
               | fonts.
               | 
               | Font size and font family should ideally always be set
               | together. If you're setting a font-size, then you should
               | force a font-family, and vice versa. Otherwise, you
               | should set neither and let the user agent decide. This
               | ensures that you would never get a broken combination
               | that's uncomfortable or unusable.
               | 
               | It's similar to the idea that whenever you're setting a
               | foreground color, you should always set the background
               | color as well.
        
       | pitaj wrote:
       | Is it just me or on Android do like 90% of these not really work
       | right? Firefox is especially sparse, but Chrome isn't much
       | better.
       | 
       | Does Android just not ship with many fonts? I'm on a Pixel 6 with
       | Android 13.
       | 
       | For instance on Firefox:
       | 
       | - Transitional, Old Style, Slab Serif, Antique, and Didone fall
       | back to serif
       | 
       | - all Humanist variants, Industrial, and Rounded Sans fall back
       | to sans-serif
       | 
       | - nothing for Handwritten (so just shows up as sans serif)
       | 
       | And Chrome is better but still not great:
       | 
       | - Transitional, Old Style, Slab Serif, and Didone fall back to
       | serif
       | 
       | - all Humanist variants and Rounded Sans fall back to source-
       | sans-pro
        
       | cantSpellSober wrote:
       | I've never had a designer tell me "if _x_ typeface isn 't
       | available, fallback to _y_. " Simply fall back to the generic
       | name unless specified.
       | 
       | Why does "Monospace Code" _begin_ with a generic name (`ui-
       | monospace`) instead of _ending_ with one?
       | 
       | (Well done demo, thanks for sharing!)
        
         | danklammer wrote:
         | `ui-monospace` is an extended system font property [1] similar
         | to `system-ui` that is currently only supported in Safari. This
         | will render SF Mono on macOS and iOS [2].
         | 
         | [1] https://caniuse.com/extended-system-fonts
         | 
         | [2] https://github.com/system-fonts/modern-font-
         | stacks#monospace...
        
       | giraffe_lady wrote:
       | It's a good default approach and the one I use most of the time.
       | 
       | If you're setting a _lot_ of text, or mixed text especially that
       | has both prose and graphs or data you run into the limitation of
       | the system fonts just not having the full set of characters.
       | 
       | Using text figures and tabular figures correctly for example is
       | one of the main things that makes those complex mixed texts read
       | well and look "professional" and afaik none of the system fonts
       | include all three sets of numbers, even if they're available in
       | that font from other sources. They also mostly don't support
       | small caps, which is better looking than most other ways you can
       | emphasize text for titles or diagram labels. The CSS auto-
       | conversion fallback is not a good substitute imo.
       | 
       | Anyway again it's a great approach for basic text and still a
       | good start for more complex stuff, but not a full solution
       | depending on how much you care about text presentation. But since
       | most websites are mostly text I think you should care a lot.
        
       | [deleted]
        
       | chrismorgan wrote:
       | https://github.com/system-fonts/modern-font-stacks explains each
       | stack and which fonts are expected to be used where, with
       | screenshots. This information makes it (mildly bizarrely, and
       | quite disappointingly) generally more useful than
       | https://modernfontstacks.com/.
       | 
       | --***--
       | 
       | A few remarks (not all that I could make, but I should sleep).
       | 
       |  _System UI:_ risky, it's a trap, there's basically _no_
       | legitimate scenario for these semantics on the public web. See
       | https://github.com/w3c/csswg-drafts/issues/3658 (skim through a
       | bit, I've got a comment near the end too).
       | 
       |  _Monospace Slab Serif:_ _every one_ of the fonts named here is a
       | bad font:
       | 
       | (a) Nimbus Mono PS mangles things like the two-column `fi`,
       | ligating them to a single-column `fi`. See
       | https://github.com/ArtifexSoftware/urw-base35-fonts/issues/3....
       | 
       | (b) Courier New is unreasonably thin due to bad digitisation
       | techniques which used to be worked around by hinting and
       | ClearType special-casing, but it's common for neither of those to
       | work to make it tolerable any more. Its 400 weight is more like a
       | 250 (if even that), and painful to read in many common
       | configurations. Never use it.
       | 
       | (c) Cutive Mono apparently _copied Courier New's known-awful
       | thinness!?_ What were they thinking?
       | 
       |  _Monospace Code:_ seriously, just go `monospace, monospace`
       | these days. Firefox 98 on Windows was the last browser where this
       | wasn't at the very least perfectly adequate. (The doubling is to
       | work around the stupid probably-13px font size misfeature that
       | I'd like to try to convince browser makers to ditch, but haven't
       | tried yet.)
       | 
       | > _Emoji Support_
       | 
       | Does adding these fonts to the end of the stack actually achieve
       | anything useful? I don't _recall_ these being necessary or
       | useful. (I vaguely recall some sort of priority issue related to
       | text /graphical representations, but that was quite a few years
       | back and I'd _expect_ it to have been dealt with now, though it's
       | _possible_ some U+FE0F might be needed if you omit this?--though
       | frankly that'd be needed anyway for universal support. Anyway,
       | I'd like concrete explanation of what this stuff does, if
       | anything.)
       | 
       | > _Anti-Aliasing_
       | 
       | If I recall correctly, these tweaks are largely Apple-specific,
       | grossly misleading in name, highly controversial, and probably a
       | waste of time. I invite correction or further education, because
       | I haven't thought about them for maybe a decade and don't use a
       | platform where they do anything.
       | 
       | --***--
       | 
       | This is much better-thought out than most sets of suggestions,
       | but I'd honestly still suggest dropping nuance in most cases, and
       | just using `serif`, `sans-serif` or `monospace, monospace`. But
       | if you want a certain general sort of character, this is pretty
       | good stuff. I've definitely done `font-family: Georgia, serif`
       | where I wanted to express a preference for a wider sort of serif,
       | and I'd do it again1.
       | 
       | --***--
       | 
       | 1 Even if I personally will get my own chosen serif font, since
       | I've unticked Firefox's _Settings - Fonts - Advanced - Allow
       | pages to choose their own fonts, instead of your selections
       | above_. Try it yourself, you might be pleasantly surprised at how
       | much the consistency improves the web, like I was. You might also
       | develop a still-deeper hatred of non-zero letter-spacing on body
       | text, which is absurdly common for something that has _absolutely
       | no legitimate use case in English text_.
        
         | hLineVsLineH wrote:
         | > _System UI_ : risky, it's a trap, there's basically _no_
         | legitimate scenario for these semantics on the public web.
         | 
         | How else would you style things with the system's UI font? User
         | interfaces on the web can be designed to fit in the native
         | system UI. It's a legitimate and useful thing to do.
         | 
         | I don't see how you can make a meaningful distinction between
         | what's "online" or "on the public web" or not. A lot of web
         | apps can run both online and offline, installed or uninstalled.
         | In all cases it uses the same web technology.
         | 
         | Just because some legacy system makes a bad choice, doesn't
         | mean everyone can't have nice things. I mean, did Windows
         | _seriously_ make all their UI use a _single_ font? Do they just
         | assume all the UI on Windows would be monolingual...?
         | 
         | I mean, it's standard practice to use a Latin font and fallback
         | to other fonts for complex scripts such as CJK, because it's
         | universally acknowledged that the Latin glyphs in these fonts
         | are terrible and unfit even for the purpose of using it _with_
         | the CJK characters.
         | 
         | Instead of discouraging or even removing it, how about actually
         | _encouraging_ people to use `system-ui` to force Microsoft and
         | other companies to fix their systems?
        
       | thrdbndndn wrote:
       | Everytime "System UI" is mentioned on HN I feel obligated to post
       | this: Be careful about it.
       | 
       | The intent of "System UI" is great. However, the actual
       | implementations across multiple platforms and especially with
       | different international languages, not so much.
       | 
       | The main issues are:
       | 
       | 1. On Chinese and Japanese Windows, it would end up using MS
       | Yahei and Yu Gothic UI. The former isn't optimized to show
       | English-only (or Latin alphabet only) content, while the latter
       | isn't even suitable to display _Japanese_ content, let alone
       | English ones. As the name suggests, it 's intended to be a "UI"
       | font - it's extremely narrow to accommodate long Japanese
       | characters in UI elements such as context menu, button etc.
       | You're supposed to use "Yu Gothic" to show normal text in
       | Japanese.
       | 
       | And because these two fonts are unicode (include almost every
       | glyphs), it won't fallback to other fonts either. English Windows
       | does not suffer from this issue the other way precisely because
       | its default UI font, "Segoe UI", not only great to show English
       | characters, it also does not contain any CJK glyphs so these
       | would fallback to proper fonts.
       | 
       | 2. Unlike "sans serif", system-ui overrides "default fonts" that
       | user can tweak in (any) browser settings. Users can even change
       | fonts for each written script/language to make they have the
       | fonts that suits them best too (and browsers usually have
       | sensible default for them). This means you can use <lang="ja">,
       | <lang="zh">, <lang="en"> to specify language of HTML elements to
       | ask the browsers to use specific fonts for each language. System-
       | ui overrides all these: once you have assigned "system-ui" it
       | will just use system font regardless of any language context.
       | Again, this is particularly bad for CJK users because of problem
       | 1 ("system-ui" fonts have all the glyphs). So end result: Chinese
       | paragraphs use Japanese characters (they're different but have
       | the same Unicode point), and vice versa.
       | 
       | 3. In lots of platforms, including MacOS (I didn't test newest
       | version yet), Android, iOS, using "system-ui" will end up using
       | exactly the same font as just use "sans serif" anyway. So it
       | really has little benefit.
       | 
       | One of the only benefit of using "system-ui" is on _English_
       | Windows: lots of browsers including Firefox and Chrome still use
       | Arial as sans-serif 's default for Latin content for backward
       | compatibility (you can change it yourself in browser settings,
       | though). So by using system-ui, on English Windows, fonts would
       | become Segoe UI, which is indeed better. But you can "fix" this
       | without messing over Chinese/Japanese users by just apply "Segoe
       | UI" directly. It does not affect other platform either because
       | they simply don't have this font. Actually, this is exactly what
       | most of major websites (GitHub, SO, Twitter, etc.) currently are
       | doing, after they rolled back from using "system-ui" due to
       | issues and backlash mentioned above. Wikipedia also tried, but
       | they now choose to continue rocking "sans-serif" without any
       | fancy "stack".
       | 
       | (I'm not a Linux guy so feel free to chime in about situations
       | there.)
        
         | alwillis wrote:
         | > 3. In lots of platforms, including MacOS (I didn't test
         | newest version yet), Android, iOS, using "system-ui" will end
         | up using exactly the same font as just use "sans serif" anyway.
         | So it really has little benefit.
         | 
         | Certainly on my Mac, which has been the case for quite some
         | time, sans-serif defaults to Helvetica.
         | 
         | Since Apple was the organization that proposed "system-ui", it
         | doesn't make sense that it would default to a font that already
         | existed.
         | 
         | Apple created San Francisco as a family of fonts for macOS,
         | iOS, iPadOS, etc., which is why Apple proposed to the W3C the
         | concept of a system-ui font that differs from sans-serif.
         | 
         | Android, newer Windows and macOS has specific fonts for system-
         | ui.
        
         | [deleted]
        
       | glogla wrote:
       | I like it.
       | 
       | It works for English, but sadly the selected fonts don't always
       | have all the national characters. Sometimes there are similar
       | enough replacements (e.g. Charis instead of Charter) but not
       | always.
        
         | reaperducer wrote:
         | I agree, since I build multi-lingual web sites. I hope this
         | will be helpful.
         | 
         | There is a little box at the top that allows you to replace the
         | default text with the text of your choice to test whether your
         | specific non-ASCII characters will work.
        
           | yawpitch wrote:
           | Ahh, thanks for noticing that, I've got a ludicrous number of
           | Vietnamese accents to deal with, and have been looking for
           | just such a tool!
        
       | lagrange77 wrote:
       | Nice. It would be really useful, if the site could preview the
       | system fonts of those systems you aren't using, though.
        
         | pseudonymcoward wrote:
         | The github page has screen grabs of all the fonts in each
         | stack: https://github.com/system-fonts/modern-font-stacks
        
           | lagrange77 wrote:
           | Nice, thanks.
        
       | partyguy wrote:
       | Similar: https://systemfontstack.com
       | 
       | Either way, it's the best way to go these days if you don't need
       | any fancy external fonts on your website.
        
       | javajosh wrote:
       | This is valuable.
       | 
       | But the value is hidden because the "key" is at the bottom, not
       | at the top. This page's value is that it shows you what device
       | fonts are available (and in use), but that's not clear (enough).
       | (And this value is further reduced by the color scheme, which
       | many people cannot distinguish.)
       | 
       | I'd also like to see a discussion of where you got these stacks.
        
       | fouronnes3 wrote:
       | I really like "font-family: system-ui, sans-serif;". Life is
       | short, let's go on with our lives!
        
         | creativenolo wrote:
         | But a short life is to be relished with delights.
        
       | SquareWheel wrote:
       | Great website. There's really no concept of "web safe" fonts
       | today when you mix in mobile operating systems. At best you can
       | choose similar-looking fonts and hope for the best, and this site
       | seems useful in that aim.
       | 
       | One tool I'd love, though would clearly be out of scope here,
       | would be a way to find safe fallbacks for popular webfonts. For
       | example I recently created a site in Montserrat. After some
       | testing I found a close fallback font was Verdana, with a size-
       | adjust[1] of about 99.5%. That resulted in minimal document
       | reflows when the font was slow to load.
       | 
       | Picking the top 10 or 20 popular Google Fonts and finding nearby
       | fonts with good scaling tweaks would be very useful. I could see
       | a sister project to this site offering something like that.
       | 
       | [1] https://developer.mozilla.org/en-US/docs/Web/CSS/@font-
       | face/...
        
         | ZeroGravitas wrote:
         | https://meowni.ca/font-style-matcher/
         | 
         | Is a tool that lets you play around to discover good fallback
         | settings.
        
           | SquareWheel wrote:
           | Thanks for the link. I've actually used this one before, but
           | it's not quite what I was hoping for.
           | 
           | These settings (font-size, line-height) are defined in the
           | content CSS, not the @font-face rule, so they won't be
           | automatically applied when the font is swapped. Properties
           | like size-adjust or ascent-override are better for matching
           | like-fonts as it's all automatic.
           | 
           | Also, while it is very useful to have a tool to come up with
           | your own pairings, I think a list that covers some of the
           | most popular fonts and creates perfect settings would be very
           | useful for quick implementations. Something like the
           | submitted site above that has done the legwork for you.
        
             | corny wrote:
             | Maybe this is more what you're looking for?
             | https://screenspan.net/fallback
        
               | SquareWheel wrote:
               | Much closer to what I had in mind! Thanks, this one is
               | new to me. It would've saved me time in my previous
               | testing.
               | 
               | Hopefully one day the existing CSS properties like
               | letter-spacing can be supported in @font-face to allow
               | for even better matching. That would make techniques like
               | this even more powerful.
        
           | airstrike wrote:
           | Loved this, thanks for sharing
        
       | toastal wrote:
       | Bold of you to assume I'd want Arial or Ubuntu before the one I
       | set as my user agent default in any stack
        
       | webmasterfish wrote:
       | Correct me if I'm wrong but is this basically just advicing on
       | using web-safe fonts?
        
         | stefncb wrote:
         | Every operating system has different fonts installed by
         | default. Unless you use custom fonts, you can't be fully
         | consistent, but the website has some groups of similar fonts
         | that should get you the same style regardless of operating
         | system.
        
       ___________________________________________________________________
       (page generated 2023-03-15 23:00 UTC)