{"id":10643,"date":"2026-08-11T17:56:29","date_gmt":"2026-08-11T22:56:29","guid":{"rendered":"https:\/\/master.dev\/blog\/?p=10643"},"modified":"2026-08-11T17:56:30","modified_gmt":"2026-08-11T22:56:30","slug":"system-ui-san-francisco-fun","status":"publish","type":"post","link":"https:\/\/master.dev\/blog\/system-ui-san-francisco-fun\/","title":{"rendered":"Reminder that `system-ui` is well supported, when you use it on macOS you get San Francisco which is a variable font, which is fun, and the fallbacks are pretty good."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You can use the value <code>system-ui<\/code> in your <code>font-family<\/code> in CSS, you get a font that represents the default user interface font. Meaning you get something kinda Windowsy on Windows, Linuxy on Linux, and Macsy on macOS, etc. It&#8217;s <a href=\"https:\/\/caniuse.com\/?search=system-ui\">well supported<\/a> across browsers and platforms. I think it&#8217;s a good choice for many situations.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">html<\/span> {\n  <span class=\"hljs-attribute\">font-family<\/span>: <span class=\"hljs-number\">100%<\/span>\/<span class=\"hljs-number\">1.4<\/span> system-ui, sans-serif;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve only got a Mac, so what I see when using it is <a href=\"https:\/\/developer.apple.com\/fonts\/\">San Francisco.<\/a> It&#8217;s a pretty fancy font, and with zero download cost, I think that&#8217;s great.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It also happens to be a <em>variable font<\/em>, meaning we can change certain aspects of the font programmatically. In the case of San Francisco, we&#8217;ve got a weight (<code>\"wght\"<\/code>) and width (<code>\"wdth\"<\/code>) axis that can pretty dramatically change the look of it.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">h1<\/span> {\n  <span class=\"hljs-attribute\">font-variation-settings<\/span>: \n    <span class=\"hljs-string\">\"wght\"<\/span> <span class=\"hljs-number\">900<\/span>,\n    <span class=\"hljs-string\">\"wdth\"<\/span> <span class=\"hljs-number\">700<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?resize=1024%2C497&#038;ssl=1\" alt=\"\" class=\"wp-image-10645\" srcset=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?resize=1024%2C497&amp;ssl=1 1024w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?resize=300%2C146&amp;ssl=1 300w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?resize=768%2C373&amp;ssl=1 768w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?resize=1536%2C746&amp;ssl=1 1536w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/Screen-Shot-2022-06-16-at-9.28.40-AM.webp?w=1614&amp;ssl=1 1614w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Same font, with changed variable font settings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s a basic demo:<\/p>\n\n\n\n<div class=\"wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper\"><iframe id=\"cp_embed_01825bc8-ffef-74d0-a192-9803f0350fa4\" src=\"\/\/codepen.io\/editor\/anon\/embed\/01825bc8-ffef-74d0-a192-9803f0350fa4?height=450&amp;theme-id=1&amp;slug-hash=01825bc8-ffef-74d0-a192-9803f0350fa4&amp;default-tab=css,result\" height=\"450\" scrolling=\"no\" frameborder=\"0\" allowfullscreen allowpaymentrequest name=\"CodePen Embed 01825bc8-ffef-74d0-a192-9803f0350fa4\" title=\"CodePen Embed 01825bc8-ffef-74d0-a192-9803f0350fa4\" class=\"cp_embed_iframe\" style=\"width:100%;overflow:hidden\">CodePen Embed Fallback<\/iframe><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">That gives us this expanded <code>&lt;h1><\/code>, narrowed and thin <code>&lt;h2><\/code>, and slightly thinned out <code>&lt;p><\/code>. On my Mac:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"560\" src=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/mac.png?resize=754%2C560&#038;ssl=1\" alt=\"\" class=\"wp-image-10649\" style=\"width:417px;height:auto\" srcset=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/mac.png?w=754&amp;ssl=1 754w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/mac.png?resize=300%2C223&amp;ssl=1 300w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">And some fallbacks:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/chrome-on-windows.png?resize=1024%2C417&#038;ssl=1\" alt=\"\" class=\"wp-image-10650\" srcset=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/chrome-on-windows.png?resize=1024%2C417&amp;ssl=1 1024w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/chrome-on-windows.png?resize=300%2C122&amp;ssl=1 300w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/chrome-on-windows.png?resize=768%2C313&amp;ssl=1 768w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/chrome-on-windows.png?w=1154&amp;ssl=1 1154w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Chrome on Windows<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"490\" src=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/firefox-on-android.png?resize=920%2C490&#038;ssl=1\" alt=\"\" class=\"wp-image-10651\" srcset=\"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/firefox-on-android.png?w=920&amp;ssl=1 920w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/firefox-on-android.png?resize=300%2C160&amp;ssl=1 300w, https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/firefox-on-android.png?resize=768%2C409&amp;ssl=1 768w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><figcaption class=\"wp-element-caption\">Firefox on Android (sorry for low quality, that&#8217;s just what it looked like in BrowserStack, which rendered on a &#8220;real device&#8221;)<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Not bad, if you ask me (websites don&#8217;t need to look the same in all browsers), and actually, it might look extra good to long-time users of those browsers\/platforms, as it looks like what the UI looks like, at least somewhat. That&#8217;s kind of the point.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s a spectrum of weights and widths:<\/p>\n\n\n\n<div class=\"wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper\"><iframe id=\"cp_embed_0182608d-317e-7f6d-a9ce-a49a677e8161\" src=\"\/\/codepen.io\/editor\/anon\/embed\/0182608d-317e-7f6d-a9ce-a49a677e8161?height=450&amp;theme-id=1&amp;slug-hash=0182608d-317e-7f6d-a9ce-a49a677e8161&amp;default-tab=result\" height=\"450\" scrolling=\"no\" frameborder=\"0\" allowfullscreen allowpaymentrequest name=\"CodePen Embed 0182608d-317e-7f6d-a9ce-a49a677e8161\" title=\"CodePen Embed 0182608d-317e-7f6d-a9ce-a49a677e8161\" class=\"cp_embed_iframe\" style=\"width:100%;overflow:hidden\">CodePen Embed Fallback<\/iframe><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s some more usage examples:<\/p>\n\n\n\n<div class=\"wp-block-cp-codepen-gutenberg-embed-block cp_embed_wrapper\"><iframe id=\"cp_embed_019ff301-f404-72d9-b0eb-25cc9e429ffe\" src=\"\/\/codepen.io\/editor\/anon\/embed\/019ff301-f404-72d9-b0eb-25cc9e429ffe?height=750&amp;theme-id=1&amp;slug-hash=019ff301-f404-72d9-b0eb-25cc9e429ffe&amp;default-tab=result\" height=\"750\" scrolling=\"no\" frameborder=\"0\" allowfullscreen allowpaymentrequest name=\"CodePen Embed 019ff301-f404-72d9-b0eb-25cc9e429ffe\" title=\"CodePen Embed 019ff301-f404-72d9-b0eb-25cc9e429ffe\" class=\"cp_embed_iframe\" style=\"width:100%;overflow:hidden\">CodePen Embed Fallback<\/iframe><\/div>\n","protected":false},"excerpt":{"rendered":"<p>You can get pretty darn flexible with it.<\/p>\n","protected":false},"author":1,"featured_media":10653,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"sig_custom_text":"","sig_image_type":"featured-image","sig_custom_image":0,"sig_is_disabled":false,"inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[7,39,169],"class_list":["post-10643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-post","tag-css","tag-typography","tag-variable-fonts"],"acf":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/master.dev\/blog\/wp-content\/uploads\/2026\/08\/sf.jpg?fit=2000%2C1200&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/posts\/10643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/comments?post=10643"}],"version-history":[{"count":7,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/posts\/10643\/revisions"}],"predecessor-version":[{"id":10655,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/posts\/10643\/revisions\/10655"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/media\/10653"}],"wp:attachment":[{"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/media?parent=10643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/categories?post=10643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/master.dev\/blog\/wp-json\/wp\/v2\/tags?post=10643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}