Jekyll2024-02-28T14:23:46+00:00https://betterwebtype.com/feed.xmlBetter Web TypeWeb typography for web designers and web developers.AI vs Designer: Who’s better at pairing fonts?2023-10-09T09:02:53+00:002023-10-09T09:02:53+00:00https://betterwebtype.com/ai-vs-designer<p>You’ve heard about it. It’s in your inbox every day, it’s in the news, it’s in social media. People are so excited about AI that they just can’t stop talking about it. AI can generate beautiful art, it can code and ship production-ready code, write articles, come up with design ideas and generate mockups, UI and prototypes, and it can even be a personal assistant.</p>
<p>With all those AI capabilities you can’t help but wonder — is AI coming for my job? Will it replace programmers, writers, and designers? Or is it just hyped up beyond realistic expectations and capabilities?</p>
<p>If you look at the <em>2023 Gartner Hype Cycle for Emerging Technologies</em> (<span class="f-acumin"><strong>Fig 1</strong></span>) you can spot the <em>generative AI</em> sitting at the top of the <em>Peak of inflated expectations</em> stage. That means a reality check is coming and the hype will settle down once it reaches the next stage — the <em>Trough of disillusionment</em>.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/gartner.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 1</strong>: Generative AI sitting on top of “Peak of inflated expectations” stage." />
<figcaption>
<p>
<strong>Fig 1</strong>: Generative AI sitting on top of “Peak of inflated expectations” stage.
</p>
</figcaption>
</figure>
<p>Will AI ever be able to do the things that took you years to master? I already dipped my toes into the AI Designer hype with the blog post <a href="/is-ai-better-at-picking-and-pairing-fonts-than-you/">Is AI better at picking and pairing fonts than you?</a> My conclusion there was that AI’s current typographic capabilities are at the level of a junior designer. Now, I want to put that to the test.</p>
<h2 id="test-setup">Test setup</h2>
<p>The test is simple: two designers, each with their font pairing versus two pairings by AI. The font pairings are then presented in a UsabilityHub preference test where test participants pick their preference without knowing whether it’s by AI or a human designer.</p>
<p><span class="f-acumin"><strong>Designer 1</strong></span>: To make the test interesting and the result more convincing, I decided to invite another designer to compete against AI with me. I asked Hrvoje Bieleń, a senior UI designer at <a href="https://pointjupiter.com/">pointjupiter.com</a>, with a professional career spanning over 25 years.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/hrvoje.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<p><span class="f-acumin"><strong>Designer 2</strong></span>: I’m a product designer, a type geek, and the author of the Better Web Type project (this website) and the <em>Better Web Typography for a Better Web</em> book.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/matej.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<p><span class="f-acumin"><strong>AI</strong></span>: In the AI corner of the ring, we have ChatGPT, a large language model–based chatbot developed by OpenAI. It scrapes the content from the internet and other publicly available resources to learn.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/chatgpt.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<p><span class="f-acumin"><strong>The task</strong></span>: The heading font was already selected — DM Serif Display (<span class="f-acumin"><strong>Fig 2</strong></span>). Designers and AI had to find a good match for body text. The prompt I used for ChatGPT was <em>What is the best open-source font for body text pairing with DM Serif Display?</em></p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/dm-serif.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 2</strong>: The DM Serif font was already selected for the headings." />
<figcaption>
<p>
<strong>Fig 2</strong>: The DM Serif font was already selected for the headings.
</p>
</figcaption>
</figure>
<p><span class="f-acumin"><strong>UsabilityHub and the recruitment of test participants:</strong></span><br />
A preference test in the UsabilityHub shows two options, side-by-side to a test participant (<span class="f-acumin"><strong>Fig 3</strong></span>). The participants can zoom in and pick the one they prefer when they’re ready. The test can have multiple variants to pick preferences for. If you want to see how the test works or just add your vote, <a href="https://app.usabilityhub.com/do/c18fd300b25a/b0">it’s still live here</a>.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/uh-test.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 3</strong>: A screenshot of the preference test in UsabilityHub." />
<figcaption>
<p>
<strong>Fig 3</strong>: A screenshot of the preference test in UsabilityHub.
</p>
</figcaption>
</figure>
<p>I recruited all the test participants in my audience (my email subscribers). I received 224 votes. Each participant would vote on both variants: <em>Designer 1 vs. AI</em> and <em>Designer 2 vs. AI</em>.</p>
<p>Let’s see what the designers and the AI came up with, and who won! Who are you rooting for?</p>
<h2 id="designer-1-vs-ai">Designer 1 vs. AI</h2>
<p>In the first face-off, we have the Assistant font take on Lora (<span class="f-acumin"><strong>Fig 4</strong></span>). Before I tell you who picked them, which one would you choose?</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/assistant-vs-lora.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 4</strong>: Assistant takes on Lora." />
<figcaption>
<p>
<strong>Fig 4</strong>: Assistant takes on Lora.
</p>
</figcaption>
</figure>
<p>Done? Okay, now I can tell you who picked the fonts: Hrvoje picked the Assistant font and ChatGPT picked Lora.</p>
<p>Here’s how Hrvoje explained his decision to pick Assistant:</p>
<blockquote>
<p>I was looking for sans-type families with similar features, like the lowercase letter g, somewhere between closed and open shapes of letters a and s. I also wanted to find a typography that would feel a little condensed but still was wide enough to be used as a body text. After a thorough search on Google fonts, I picked a variable font Assistant by type designer Ben Nathan. It lacks italics, but in all other aspects, I feel it accompanies DM Serif Display pretty fairly. It has pretty open shapes, but the terminals are slightly pointing inward, thus giving the feel of the intent of closing the shapes — like it was frozen in the attempt. Some angles follow a similar direction to that of DM Serif Display. Both families have similar x-heights, which gives this pairing even more credibility.</p>
</blockquote>
<p>Here’s what his pairing looks like (<span class="f-acumin"><strong>Fig 5</strong></span>):</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/Assistant.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 5</strong>: The pairing of Assistant and DM Serif by Hrvoje." />
<figcaption>
<p>
<strong>Fig 5</strong>: The pairing of Assistant and DM Serif by Hrvoje.
</p>
</figcaption>
</figure>
<p>Here’s how ChatGPT explained its choice of Lora:</p>
<blockquote>
<p>Lora is an open-source serif font designed by Olga Karpushina. It has a classic and elegant appearance that works well for body text. Lora’s moderate contrast and well-defined letterforms make it a suitable companion for DM Serif Display, maintaining a cohesive and refined aesthetic. Using DM Serif Display for headings and Lora for body text can create a balanced typographic pairing that offers contrast while maintaining readability. The combination exudes a sense of sophistication and elegance.</p>
</blockquote>
<p>And here’s what the ChatGPT’s pairing looks like (<span class="f-acumin"><strong>Fig 6</strong></span>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/Lora.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 6</strong>: The pairing of Lora and DM Serif by ChatGPT." />
<figcaption>
<p>
<strong>Fig 6</strong>: The pairing of Lora and DM Serif by ChatGPT.
</p>
</figcaption>
</figure>
<p>Okay, so who won? This was a close one, the result was 51% vs. 49%. UsabilityHub noted that it wasn’t statistically significant because of such a small difference. A result this close would need a lot more votes to become statistically significant. And the winner is… Hrvoje! 🏆 1-0 for designers.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/hrvoje-winner.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<h2 id="designer-2-vs-ai">Designer 2 vs. AI</h2>
<p>In the second face-off, we have Satoshi taking on Roboto. Again, before I tell you who picked them, which font would you choose to pair with DM Serif?</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/satoshi-vs-roboto.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 7</strong>: In the second round Satoshi takes on Roboto." />
<figcaption>
<p>
<strong>Fig 7</strong>: In the second round Satoshi takes on Roboto.
</p>
</figcaption>
</figure>
<p>I picked Satoshi and ChatGPT chose Roboto. Here’s how I picked Satoshi:</p>
<blockquote>
<p>I started by analysing DM Serif Display which was already picked as the font for the headings. I thought to myself: DM Serif looks elegant and sophisticated, but there’s something else to it — it looks kind of modern. It’s not a typical neo-classical or transitional font (Baskerville is a good example), but more a mix of the two styles. It has a high contrast that reminds me of neo-classical fonts like Bodoni but the letter shapes are pretty open and the serifs reminded me of those in Baskerville which is a typical transitional font. But the serifs are less pronounced and more nuanced.</p>
</blockquote>
<blockquote>
<p>Okay, so it’s a somewhat modern-looking serif font with high contrast. What font would also look modern but still be the exact opposite? I knew I was after a sans-serif right away. I wanted closed letter shapes, no contrast, and something unique that still looks good as a body text font. I wanted the x-height to be similar so that the two fonts look well-balanced when next to each other at similar sizes. I tried numerous geometric and grotesque sans-serif fonts, eventually landing on Satoshi. It has everything I was looking for, but most importantly it’s a grotesque sans-serif that feels modern and complements the modern side of DM Serif Display.</p>
</blockquote>
<p>And here’s what the pairing of Satoshi and DM Serif look like (<span class="f-acumin"><strong>Fig 8</strong></span>):</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/Satoshi.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 8</strong>: The pairing of Satoshi and DM Serif by me." />
<figcaption>
<p>
<strong>Fig 8</strong>: The pairing of Satoshi and DM Serif by me.
</p>
</figcaption>
</figure>
<p>This is how ChatGPT explained its choice of Roboto:</p>
<blockquote>
<p>Roboto is an open-source sans-serif font designed by Christian Robertson. It has a clean and neutral design that contrasts well with the ornate and decorative style of DM Serif Display. Roboto is known for its readability on screens and in print, making it a suitable choice for body text.</p>
</blockquote>
<blockquote>
<p>Pairing DM Serif Display with Roboto for body text creates an eye-catching contrast between the two styles. The combination of a decorative display font with a simple and contemporary sans-serif can result in an engaging typographic composition.</p>
</blockquote>
<p>This is what the pairing of Roboto and DM Serif looks like (<span class="f-acumin"><strong>Fig 9</strong></span>)</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/Roboto.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="<strong>Fig 9</strong>: The pairing of Roboto and DM Serif by ChatGPT." />
<figcaption>
<p>
<strong>Fig 9</strong>: The pairing of Roboto and DM Serif by ChatGPT.
</p>
</figcaption>
</figure>
<p>Okay, who won the second round? The result was 56% against 44% in favour of the winner. Usability Hub says that it is statistically significant in this round. And the winner of this round is… Me! 🏆 2-0 for designers!</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-vs-designer/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-vs-designer/matej-winner.png,
/assets/img/posts/ai-vs-designer/[email protected] 1.5x,
/assets/img/posts/ai-vs-designer/[email protected] 2x" src="/assets/img/posts/ai-vs-designer/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<p>Both results are very close, let’s take a closer look at what this means.</p>
<h2 id="designers-won-what-does-that-mean">Designers won, what does that mean?</h2>
<div class="related-read">
<div class="flex-wrap-c-center-mobile no-bottom-margin"><div class="no-bottom-margin related-read-image"><a href="/is-ai-better-at-picking-and-pairing-fonts-than-you/">
<img srcset="/assets/img/posts/ai-better-than-you/post.png,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="Is AI better at picking and pairing fonts than you?" />
</a></div><div class="related-read-title no-bottom-margin"><p class="related-read-meta no-bottom-margin f-s-16px f-acumin">Related post ~ 9 min read</p><h1 class="no-bottom-margin right-pad-20px">
<a href="/is-ai-better-at-picking-and-pairing-fonts-than-you/">Is AI better at picking and pairing fonts than you?</a>
</h1></div>
</div>
</div>
<p>I have to admit, I’m surprised by how close the results were. I expected an easy win for designers, especially after <a href="/is-ai-better-at-picking-and-pairing-fonts-than-you/">reviewing the font pairing capabilities in a previous article</a> where I found that AI’s font choices aren’t very original.</p>
<p>Okay, but what does this all mean? AI picking common fonts is why they’re not original picks but also why the result is so close. <em>Many professionals believe that what you read most, you read best</em> (<a href="https://creativepro.com/legibility-and-readability-whats-the-difference/">source</a>), meaning that the most common fonts are also the most popular. The word “popular” originates from Latin where <em>popularis</em> means <em>general, common; devoted to or accepted by the people</em> (<a href="https://www.etymonline.com/word/popular#etymonline_v_18468">source</a>).</p>
<p>My conclusion here is that the designers in this face-off picked really good font selections to beat the common (popular) font choices by AI. We can attribute the close result to the mere-exposure effect which is <em>a phenomenon by which people tend to develop a liking for things merely because they are familiar with them</em> (<a href="https://en.wikipedia.org/wiki/Mere-exposure_effect">source</a>). Both fonts picked by AI, Roboto and Lora, are very common.</p>
<p>What does this mean for you? Should you trust AI with the font picking and pairing tasks for your projects? I wouldn’t recommend that right now as it comes up with pretty basic recommendations. It can be a good starting point for learning because ChatGPT can provide explanations on why it picked the fonts it did. Designers can read those and look for better, and more original, font options with similar characteristics that ChatGPT based its choice on.</p>
<p>Let’s move to the most pressing question — is AI coming for your job as some claim? Far from it. AI currently does what a lot of designers do. So its solutions aren’t very creative or original. As you can see, the two designers in this test both picked a somewhat uncommon font for the body text but still won the test. This means that the work of creative, experienced designers who strive for a balance between originality and creativity stands out in quality but doesn’t suffer in accessibility. AI can’t do that. Not yet. But it’ll be exciting to see what it’ll learn to do in the future. I guess it might learn from this article too 🤔</p>
<p>What do you think? Let me know in the comments below 👇</p>
<p>A special thanks goes to Hrvoje for participating in this fun experiment with me!</p>
<section class="widget alignCenter no-padding-bottom">
<h3 class="h2 max-width-500px floatCenter">Better Web Typography for a Better Web</h3>
<p class="uppercase f-acumin">Free Course</p>
<p class="f-acumin max-width-500px floatCenter">Join 30,000+ designers and developers, get 7 free lessons and unlock your better web typography skills. </p>
<a href="/" class="button floatCenter" id="course-widget-cta">Learn more →</a>
<p class="small f-acumin floatCenter">Just cool web typography stuff, no spam.</p>
<img srcset="
/assets/img/course/course-widget-image.png,
/assets/img/course/[email protected] 1.5x,
/assets/img/course/[email protected] 2x" src="/assets/img/course/course-widget-image.png" alt="Example lesson" class="floatCenter no-bottom-margin" />
</section>Matej LatinYou’ve heard about it. It’s in your inbox every day, it’s in the news, it’s in social media. People are so excited about AI that they just can’t stop talking about it. AI can generate beautiful art, it can code and ship production-ready code, write articles, come up with design ideas and generate mockups, UI and prototypes, and it can even be a personal assistant.8 more micro tips for remarkably better typography2023-09-23T09:02:53+00:002023-09-23T09:02:53+00:00https://betterwebtype.com/8-more-mirco-tips-for-remarkably-better-typography<p>In case you missed it, there’s a <a href="/8-tips-for-remarkably-better-typography/">part 1</a> of this two-part blog post series. I already mentioned there that typography is way more than just picking a font and setting font sizes. It’s more than these micro tips too, but these are great to get you started. In that post, I already gave you 8 micro tips to make your typography remarkable. Now I’ll give you 8 more in another 8 minutes. Let’s go!</p>
<p><em>By the way, if you want to learn more about the craft of web typography, you should start with my <a href="/">free course Better Web Type</a>.</em></p>
<h2 class="h4">1. Adjust font sizes when using different fonts inline to create a better reading experience</h2>
<p>A lot of blogs use some sort of text snippets inline with their paragraph text. Code snippets are a great example of this. You want to make these snippets stand out a bit so that it’s easier for the reader to read and understand what you’re explaining. But these shouldn’t stand out too much. Literally and figuratively.</p>
<p>I’m using <em>Meta Serif Pro</em> and <em>JetBrains Mono</em> in the example below. <em>JetBrains</em> is obviously larger than <em>Meta Serif</em> (when they’re set at the same size). This results in a font standing out too much and in an unattractive way (left example in <span class="f-acumin"><strong>Fig 1</strong></span>). This is not what a professional, experienced designer would allow. To improve it, I reduced the size of JetBrains Mono from <code class="language-plaintext highlighter-rouge">14 pixels</code> to <code class="language-plaintext highlighter-rouge">12 pixels</code>. The font is heavier than Meta Serif so they pair really well even when the JetBrains’ size is reduced (right example if <span class="f-acumin"><strong>Fig 1</strong></span>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/01-different-font-sizes.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 1</strong>: Meta Serif Pro and JetBrains are different in size so JetBrains needs to be reduced a bit for them to match." />
<figcaption>
<p>
<strong>Fig 1</strong>: Meta Serif Pro and JetBrains are different in size so JetBrains needs to be reduced a bit for them to match.
</p>
</figcaption>
</figure>
<h2 class="h4">2. Increase the line height if you use inline code snippets</h2>
<p>The second tip is the perfect follow-up to the first one. To make the inline code snippets stand out a bit more (in a good way) they often come with a colour box around them. There’s a high chance that these boxes will clash between the lines of text (left example in <span class="f-acumin"><strong>Fig 2</strong></span>). It looks ugly even if they don’t clash but come close. To prevent that you should increase the line height of your text if you use inline code snippets (right example in <span class="f-acumin"><strong>Fig 2</strong></span>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/02-inline-code-snippets.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 2</strong>: When the line height is increased the code snippets don’t clash and have “room to breathe.”" />
<figcaption>
<p>
<strong>Fig 2</strong>: When the line height is increased the code snippets don’t clash and have “room to breathe.”
</p>
</figcaption>
</figure>
<h2 class="h4">3. Using huge type is bold but you should reduce letter-spacing to make it beautiful</h2>
<p>Huge type looks great when done right. I already wrote about huge type and how to use it on the web and how to do it well. <em>The main thing</em> for making huge type look beautiful is reducing the letter-spacing. The spacing between the letters in fonts is generally optimised for small sizes. It’s what fonts are most commonly used for.</p>
<p>So when you increase the font size considerably, it’ll suddenly look like there’s too much space between the letters. Take a look at the top example in the image below (<span class="f-acumin"><strong>Fig 3</strong></span>). It may look ok to an untrained eye, but look at the bottom example where letter-spacing has been reduced by 2%. It looks refined and polished. That’s because it looks more correct. This applies to titles that aren’t set in uppercase letters. The letter-spacing should be reduced by 1 to 2% maximum.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/03-large-type-letter-spacing.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 3</strong>: Spacing in fonts is optimised for smaller sizes. Reduced it when the font is used at large sizes." />
<figcaption>
<p>
<strong>Fig 3</strong>: Spacing in fonts is optimised for smaller sizes. Reduced it when the font is used at large sizes.
</p>
</figcaption>
</figure>
<h2 class="h4">4. Check the legibility of the font to ensure good readability of your text</h2>
<p>Let’s establish the difference between legibility and readability first.</p>
<blockquote>
<p><ins>Legibility</ins> is an informal measure of how easy it is to distinguish one letter from another in a particular typeface.<br />
<ins>Readability</ins> is about the reader – the ease with which a reader can successfully decipher, process, and make meaning of the text read.<br />
— <a href="https://readabilitymatters.org/articles/legibility-vs-readability">Source</a></p>
</blockquote>
<p>Helvetica, one of the most popular fonts out there, scores poorly on legibility because a lot of its characters aren’t distinct enough. A good quick way to check the legibility of a font’s key letters is to check the letters “1lI O0.” If they’re too similar, they’re not very legible. Take a look at the examples of “Illustrator” below (<span class="f-acumin"><strong>Fig 4</strong></span>). On the left, a font with poor legibility is used, on the right a better font is used. Make sure you check this whenever choosing a font or the readability of your text might suffer.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/04-legibility.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 4</strong>: Test fonts for legibility when picking them. Use “1lI O0” for a quick check." />
<figcaption>
<p>
<strong>Fig 4</strong>: Test fonts for legibility when picking them. Use “1lI O0” for a quick check.
</p>
</figcaption>
</figure>
<h2 class="h4">5. Check the kerning of the font when you’re deciding which one to use</h2>
<p>Kerning is the spacing between letters in a font. Unlike letter spacing (from the tips before) you can’t control this one. It’s embedded in the design of the font. All you can do is enable or disable it. But some fonts come with poor kerning and you need to watch out for that.</p>
<p>Whenever you’re picking fonts, type “TyHMAVA” to check the kerning. Fonts with poor kerning will have weird-looking spaces between “T” and “y,” and “A” and “V.” Fonts with really poor kerning will have weird spacing between “H” and “M” too. Take a look at an example of poor kerning below (left example in <span class="f-acumin"><strong>Fig 5</strong></span>) and a font with normal kerning on the right.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/05-kerning-check.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 5</strong>: Poor kerning in a font is reason enough to reject it." />
<figcaption>
<p>
<strong>Fig 5</strong>: Poor kerning in a font is reason enough to reject it.
</p>
</figcaption>
</figure>
<h2 class="h4">6. Use proportional figures to make tables of numbers easier to read</h2>
<p>You learned about lining and old-style figures in tip number five <a href="/8-tips-for-remarkably-better-typography/">in the first part of this blog post series</a>. Lining figures are basically uppercase numbers and old-style ones are lowercase. But there’s another important variant that you need to learn about — proportional versus tabular.</p>
<p>The tabular ones are commonly called monospaced. They always take up the same amount of width. So if you compare number 1 to a 0, they’ll be equal in width. Not the number designs themselves but the spacing around them. This makes them great for tables where numbers are often compared between rows. The top example in the image below (<span class="f-acumin"><strong>Fig 8</strong></span>) uses normal, proportional figures, and the bottom one uses tabular. The numbers are so much easier to compare and the table is easier to read in the example below.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/08-tabular-figures.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 8</strong>: Tabular figures make rows of numbers easy to compare and tables easier to read." />
<figcaption>
<p>
<strong>Fig 8</strong>: Tabular figures make rows of numbers easy to compare and tables easier to read.
</p>
</figcaption>
</figure>
<h2 class="h4">7. Improve your visual hierarchy with better margins above and below headings</h2>
<p>Another problem that is very common is incorrect margins above and below headings. Even some official WordPress themes come with this mistake — the margin above the heading is equal to the one below (left example in <span class="f-acumin"><strong>Fig 7</strong></span>). The heading hangs somewhere in the middle, not belonging to either of the text blocks. When in fact, it should be closer to the paragraph below because that’s the text it’s related to (right example in <span class="f-acumin"><strong>Fig 7</strong></span>). Scanning and reading articles is easier when this is corrected because it’s perfectly clear when a section ends and a new one starts. I recommend the margin above to be at least 2x of the one below. Sometimes I use even 3x.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/07-heading-margins.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 7</strong>: Increase the margin above the heading to at least 2x of the bottom one." />
<figcaption>
<p>
<strong>Fig 7</strong>: Increase the margin above the heading to at least 2x of the bottom one.
</p>
</figcaption>
</figure>
<h2 class="h4">8. Adjust your line height to the language used in the text</h2>
<p>I lived in Germany for two years and learned a few interesting things about the German language. <em>One</em>, they have a habit of merging words together. For example, this is a word meaning “motor vehicle indemnity insurance” — <em>Kraftfahrzeughaftpflichtversicherung.</em> According to <a href="https://www.theguardian.com/world/2013/jun/03/indfleischetikettierungsberwachungsaufgabenbertragungsgesetz-word-germany">this article</a> it’s the longest word in the German lagnuage — it’s 36 characters long! The merging of words results in generally longer words. On average, German words are 11.66 characters long, compared to just 8 in English.</p>
<p><em>Two</em>, all German nouns are capitalised. That means there’s a lot of capitalisation in a normal paragraph of text. Take a look at the examples below (<span class="f-acumin"><strong>Fig 8</strong></span>). You’ll notice that the paragraph is ragged on the right. Meaning that there’s a lot more space at the end of the lines. That’s because the long words don’t fit and they’re pushed into the new line. Another thing you’ll notice is a lot of capitalised words. To make the text easier to read, you should increase your line height in such cases (right example in <span class="f-acumin"><strong>Fig 8</strong></span>). This helps the eyes move to the correct line when there’s so much space at the end and give more breathing room to all the capitals in the text.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/08-language.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 8</strong>: Give your text room to breathe, consider the language to be used." />
<figcaption>
<p>
<strong>Fig 8</strong>: Give your text room to breathe, consider the language to be used.
</p>
</figcaption>
</figure>
<h2 class="h4">Why should you learn how to do typography well?</h2>
<p>First of all, you’re probably reading this because you’re either a designer or a web developer. Both roles are important in shaping texts online. That alone is reason enough. But why should you do it well? Why care? Here are 4 reasons from the top of my mind:</p>
<ul>
<li>Your work will stand out as original and of higher quality</li>
<li>The texts that you’ll design (or code) will be easy and enjoyable to read</li>
<li>You’ll become a part of the small group of top designers and developers who contribute to remarkably improving web typography — making the web better and more accessible for everyone</li>
<li>You’ll start seeing poor typography EVERYWHERE. You’ll go to a restaurant and spend 30 minutes ranting about how their menu design sucks because of poor choice of fonts. This is the fun part of it.</li>
</ul>
<p>In short, it’s your responsibility to design and code better web typography. It’s a responsibility that will turn into a craft. You’ll enjoy it, believe me. Learn how to do it well with <a href="/">my free course Better Web Type</a>.</p>
<section class="widget alignCenter no-padding-bottom">
<h3 class="h2 max-width-500px floatCenter">Better Web Typography for a Better Web</h3>
<p class="uppercase f-acumin">Free Course</p>
<p class="f-acumin max-width-500px floatCenter">Join 30,000+ designers and developers, get 7 free lessons and unlock your better web typography skills. </p>
<a href="/" class="button floatCenter" id="course-widget-cta">Learn more →</a>
<p class="small f-acumin floatCenter">Just cool web typography stuff, no spam.</p>
<img srcset="
/assets/img/course/course-widget-image.png,
/assets/img/course/[email protected] 1.5x,
/assets/img/course/[email protected] 2x" src="/assets/img/course/course-widget-image.png" alt="Example lesson" class="floatCenter no-bottom-margin" />
</section>Matej LatinIn case you missed it, there’s a part 1 of this two-part blog post series. I already mentioned there that typography is way more than just picking a font and setting font sizes. It’s more than these micro tips too, but these are great to get you started. In that post, I already gave you 8 micro tips to make your typography remarkable. Now I’ll give you 8 more in another 8 minutes. Let’s go!An analysis of 5 monospaced fonts with coding ligatures2023-09-16T09:02:53+00:002023-09-16T09:02:53+00:00https://betterwebtype.com/5-more-monospaced-fonts-with-cool-coding-ligatures<p>I only switched from the default font when I switched from Sublime Text to Visual Studio a few years ago. That’s when I wrote the <a href="/5-free-monospaced-fonts-with-coding-ligatures/">original blog post about 5 monospaced fonts with coding ligatures</a>. I was customising Visual Studio’s theme and wanted something different. I wanted to make the setup more “mine.”</p>
<p>We’re in the golden age of fonts, especially open-source ones. Many more monospaced fonts with coding ligatures have sprung up since that blog post so it’s time to revisit and examine five more.</p>
<p>I’ll compare them to Fira Code, a popular choice among programmers which makes it a perfect baseline for such comparison. This way we’ll see how the fonts I picked compare in legibility, x-height, ligatures, and what they look like in action.</p>
<p>What are ligatures? They’re specially designed characters in a font that usually combine two characters into one, to prevent collisions (Fig 1).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 1</strong>: An example of “fi” “fj” “fl” “ffi” ligatures. The bottom example with ligatures is the desirable one." />
<figcaption>
<p>
<strong>Fig 1</strong>: An example of “fi” “fj” “fl” “ffi” ligatures. The bottom example with ligatures is the desirable one.
</p>
</figcaption>
</figure>
<h2 id="fira-code">Fira Code</h2>
<p>Fira Code is based on Fira Mono from Mozilla. It has a regular x-height, many coding ligatures, and scores well on legibility. That’s what makes it an even better baseline for comparison. This is what it looks like in action (Fig 2).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-fira.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 2</strong>: Fira Code in action." />
<figcaption>
<p>
<strong>Fig 2</strong>: Fira Code in action.
</p>
</figcaption>
</figure>
<h3 id="x-height">X-height</h3>
<p>Larger x-height is generally considered to have a positive impact on legibility for small font sizes. This certainly applies to fonts for coding so x-height will be one of the major factors in my analysis.</p>
<p>Fira Code’s x-height is what I would call “regular” (Fig 3). Not small, not large, somewhere in between. This is another property that makes it a good baseline to compare other fonts to.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-fira.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 3</strong>: Fira Code’s x-height is regular." />
<figcaption>
<p>
<strong>Fig 3</strong>: Fira Code’s x-height is regular.
</p>
</figcaption>
</figure>
<h3 id="legibility">Legibility</h3>
<p>The legibility of a font can be quickly evaluated by taking a close look at characters 1lI O0. The designs of these characters need to be distinct, which in the case of Fira Code, they are (Fig 4).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-fira.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 4</strong>: Fira Code scores well on legibility." />
<figcaption>
<p>
<strong>Fig 4</strong>: Fira Code scores well on legibility.
</p>
</figcaption>
</figure>
<h3 id="coding-ligatures">Coding ligatures</h3>
<p>When it comes to coding ligatures, Fira Code probably has the widest range. Here are some of the most prominent ones (Fig 5).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-fira.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 5</strong>: Fira Code has the widest reange of coding ligatures and they look great." />
<figcaption>
<p>
<strong>Fig 5</strong>: Fira Code has the widest reange of coding ligatures and they look great.
</p>
</figcaption>
</figure>
<p>Ok, we have the baseline established, now let’s take a look at new monospaced fonts with coding ligatures.</p>
<h2 id="commit-mono">Commit Mono</h2>
<p>Commit Mono is described by its authors as _an anonymous and neutral coding font focused on creating a better reading experience. _It’s a variable font, highly customisable through its many Open Type features.</p>
<p>It even comes with “Smart kerning.” Kerning is crucial for readability but it has been impossible to combine with monospaced fonts so far. “Smart kerning” slides letters into a better position while preserving the monospacing. This makes the Commit Mono a highly readable monospaced font (Fig 6).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/commit-smart-kerning.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 6</strong>: Commit Mono’s smart kerning feature helps improve the readability of the font. Notice the position of “o” in the bottom example." />
<figcaption>
<p>
<strong>Fig 6</strong>: Commit Mono’s smart kerning feature helps improve the readability of the font. Notice the position of “o” in the bottom example.
</p>
</figcaption>
</figure>
<p>Here’s what Commit Mono looks like in action (Fig 7).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-commit.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 7</strong>: Commit Mono in action." />
<figcaption>
<p>
<strong>Fig 7</strong>: Commit Mono in action.
</p>
</figcaption>
</figure>
<h3 id="ligatures">Ligatures</h3>
<p>Commit Mono doesn’t have a huge range of coding ligatures but it has the basic ones. They look nice, but those in Fira Code look nicer. Have a look for yourself (Fig 8).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-commit.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 8</strong>: Coding ligatures in Commit Mono." />
<figcaption>
<p>
<strong>Fig 8</strong>: Coding ligatures in Commit Mono.
</p>
</figcaption>
</figure>
<h3 id="x-height-1">X-height</h3>
<p>Commit Mono’s x-height is just slightly larger than that of Fira Code (Fig 9). As I take a closer look, I notice how well-spaced the Commit Mono’s characters are. Is that the “Smart kerning” in action?</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-commit.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 9</strong>: Commit Mono’s x-height is comparable to that of Fira Code." />
<figcaption>
<p>
<strong>Fig 9</strong>: Commit Mono’s x-height is comparable to that of Fira Code.
</p>
</figcaption>
</figure>
<h3 id="legibility-1">Legibility</h3>
<p>Even as I closely inspect the characters 1lI O0 I noticed a lot of similarities between Commit Mono and Fira Code. Take a look at the lowercase “l” and uppercase “I.” They look almost identical (Fig 10).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-commit.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 10</strong>: Commit Mono scores well in legibility, notice the similarity to some of Fira Code’s characters." />
<figcaption>
<p>
<strong>Fig 10</strong>: Commit Mono scores well in legibility, notice the similarity to some of Fira Code’s characters.
</p>
</figcaption>
</figure>
<p>Anyway, Commit Mono’s legibility is ok, it’s easy to tell the key characters apart.</p>
<p><a href="https://commitmono.com/?utm_source=betterwebtype">Download Commit Mono →</a></p>
<h2 id="cascadia">Cascadia</h2>
<p>Cascadia is Microsoft’s new default monospaced font. It comes bundled with Windows Terminal and is the new default option in Visual Studio. So if you use the latest version of VS and haven’t changed your default font, perhaps you’re using this one but aren’t aware of it?</p>
<p>The italic version also has an alternative, cursive style available which looks great for comments in code. This is what it looks like in action (Fig 11).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-cascadia-cursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 11</strong>: Cascadia in action. Looks a bit heavier but still nice and well balanced." />
<figcaption>
<p>
<strong>Fig 11</strong>: Cascadia in action. Looks a bit heavier but still nice and well balanced.
</p>
</figcaption>
</figure>
<h3 id="coding-ligatures-1">Coding ligatures</h3>
<p>Cascadia Code supports many coding ligatures and even arrows. They’re somewhat similar to those in Fira Code, although I think those still look a bit better (Fig 12).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-cascadia.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 12</strong>: Cascadia supports a wide range of coding ligatures, some of them are similar to those in Fira Code." />
<figcaption>
<p>
<strong>Fig 12</strong>: Cascadia supports a wide range of coding ligatures, some of them are similar to those in Fira Code.
</p>
</figcaption>
</figure>
<h3 id="x-height-2">X-height</h3>
<p>Cascadia’s x-height is almost exactly the same as that of Fira Code, just slightly smaller. I wonder if the author took Fira Code as the basis when they started working on Cascadia. But if you take a closer look at the characters you’ll see they’re quite different. Cascadia has a lot more character but still looks great (Fig 13).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-cascadia.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 13</strong>: A side-by-side comparison of x-height, it's clear that Cascadia’s x-height is just a bit smaller." />
<figcaption>
<p>
<strong>Fig 13</strong>: A side-by-side comparison of x-height, it's clear that Cascadia’s x-height is just a bit smaller.
</p>
</figcaption>
</figure>
<h3 id="legibility-2">Legibility</h3>
<p>When it comes to legibility Cascadia scores similarly to Fira Code. The character designs are distinct enough to separate them easily in text-heavy situations like code generally is. The “O” and “0” characters are quite similar but the latter has a dot inside it to make it clear that it’s a number and not a letter (Fig 14).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-cascadia.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 14</strong>: Cascadia scores well on legibility. Again, notice the similarity to some of Fira Code’s characters." />
<figcaption>
<p>
<strong>Fig 14</strong>: Cascadia scores well on legibility. Again, notice the similarity to some of Fira Code’s characters.
</p>
</figcaption>
</figure>
<p>Cascadia generally looks heavier and has less contrast than Fira Code. This is a design feature that I really liked in <a href="https://betterwebtype.com/5-free-monospaced-fonts-with-coding-ligatures/#jetbrains-mono">JetBrains Mono</a> in the original article.</p>
<h3 id="cursive-style">Cursive style</h3>
<p>As mentioned earlier, Cascadia supports a cursive variant of the italic style (Fig 15). This is often used for comments in code to help visually separate them from the actual code.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/cursive-cascadia.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 15</strong>: The cursive variant adds a bit more character to code, it’s great for visually separating comments from code." />
<figcaption>
<p>
<strong>Fig 15</strong>: The cursive variant adds a bit more character to code, it’s great for visually separating comments from code.
</p>
</figcaption>
</figure>
<p><a href="https://github.com/microsoft/cascadia-code?utm_source=betterwebtype">Download Cascadia →</a></p>
<h2 id="victor-mono">Victor Mono</h2>
<p>Its authors describe it as <em>an open-source monospaced font with optional semi-connected cursive italics and programming symbol ligatures. It’s slender, crisp and narrow, with a large x-height and clear punctuation, making it legible and ideal for code. It comes in seven weights and Roman, Italic and Oblique styles.</em></p>
<p>Unlike Cascadia, the cursive style isn’t optional with Victor Mono. It’s how the Italic style is designed. Here’s what it looks like in action (Fig 16).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-victor.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 16</strong>: Victor Mono looks taller and slimmer." />
<figcaption>
<p>
<strong>Fig 16</strong>: Victor Mono looks taller and slimmer.
</p>
</figcaption>
</figure>
<h3 id="coding-ligatures-2">Coding ligatures</h3>
<p>Victor Mono also has a good range of coding ligatures, their designs remind me of those in Fira Code. But Victor Mono has a larger x-height and is generally thinner so the ligatures reflect that (Fig 17).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-victor.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 17</strong>: Victor Mono has a nice range of common coding ligatures and they look great." />
<figcaption>
<p>
<strong>Fig 17</strong>: Victor Mono has a nice range of common coding ligatures and they look great.
</p>
</figcaption>
</figure>
<h3 id="x-height-3">X-height</h3>
<p>Based on the author’s description, I expected Victor Mono to have a really large x-height, compared to Fira Code (Fig 18). It is larger, but there are monospaced fonts out there that have even larger ones. <a href="https://betterwebtype.com/5-free-monospaced-fonts-with-coding-ligatures/#monoid">Monoid from the original article</a> comes to mind.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-victor.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 18</strong>: Examining Victor Mono closely reveals it’s larger x-height and how much slimmer it looks compared to Fira Code." />
<figcaption>
<p>
<strong>Fig 18</strong>: Examining Victor Mono closely reveals it’s larger x-height and how much slimmer it looks compared to Fira Code.
</p>
</figcaption>
</figure>
<h3 id="legibility-3">Legibility</h3>
<p>The characters 1lI O0 look nice and distinct. Having a closer look now it’s clear how much lighter Victor Mono is (Fig 19). This is something that looks nice on high-resolution displays but I wouldn’t use it on my external monitor. I have to say that the font is very easy on the eye as I test it in my code editor (on my MacBook’s Retina screen).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-victor.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 19</strong>: Victor Mono scores well on legibility. Again, notice the similarity to Fira Code in designs of key characters." />
<figcaption>
<p>
<strong>Fig 19</strong>: Victor Mono scores well on legibility. Again, notice the similarity to Fira Code in designs of key characters.
</p>
</figcaption>
</figure>
<p><a href="https://rubjo.github.io/victor-mono/?utm_source=betterwebtype">Download Victor Mono →</a></p>
<h2 id="sf-mono">SF Mono</h2>
<p>This is macOS’ default monospaced font but “ligaturised.” This means that Apple’s SF Mono was taken and the ligatures from Fira Code were added with the <a href="https://github.com/ToxicFrog/Ligaturizer">Ligaturizer</a>. It’s a tool to do exactly that. So if you already picked your favourite font and it doesn’t have ligatures you can still add them with this tool. This is what SF Mono looks like in action (Fig 20).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-sf.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 20</strong>: SF Mono in action." />
<figcaption>
<p>
<strong>Fig 20</strong>: SF Mono in action.
</p>
</figcaption>
</figure>
<h3 id="coding-ligatures-3">Coding ligatures</h3>
<p>The ligatures are the same as those in Fira Code but scale-corrected (fig 21). This means that they fit nicely with the font they were added into. I take a closer look and notice that the designs are exactly the same but the size isn’t. Those in Fira Code seem slightly larger.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-sf.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 21</strong>: Because SF Mono is “Ligaturised” it has the same coding ligatures as Fira Code." />
<figcaption>
<p>
<strong>Fig 21</strong>: Because SF Mono is “Ligaturised” it has the same coding ligatures as Fira Code.
</p>
</figcaption>
</figure>
<h3 id="x-height-4">X-height</h3>
<p>The x-height of SF Mono is almost the same as that of Fira Code (Fig 22). I can barely see a difference — SF Mono’s is maybe just a tiny bit smaller. That explains why the ligatures are just slightly smaller too.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-sf.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 22</strong>: SF Mono’s x-height is just slightly smaller than that of Fira Code." />
<figcaption>
<p>
<strong>Fig 22</strong>: SF Mono’s x-height is just slightly smaller than that of Fira Code.
</p>
</figcaption>
</figure>
<h3 id="legibility-4">Legibility</h3>
<p>SF Mono’s legibility is ok (Fig 23). Something that stands out to me is the number 1 being quite similar to the lowercase “l.” I think these two could be confused. Other than that, everything looks fine.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-sf.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 23</strong>: The “1” and lowercase “l” are quite similar and could be confused with each other. Other than that the legibility of SF Mono looks ok." />
<figcaption>
<p>
<strong>Fig 23</strong>: The “1” and lowercase “l” are quite similar and could be confused with each other. Other than that the legibility of SF Mono looks ok.
</p>
</figcaption>
</figure>
<p><a href="https://github.com/shaunsingh/SFMono-Nerd-Font-Ligaturized?utm_source=betterwebtype">Download SF Mono →</a></p>
<h2 id="recursive">Recursive</h2>
<p>Recursive is the last font on my list to examine but it may be the most impressive one. It’s a font with five variable properties: weight, slant, mono, casual, and cursive. This means it’s highly customisable.</p>
<p>The mono, causal, and cursive variable properties are the more interesting ones. Mono changes the font from a completely monospaced to a proportional (normal) font (bottom example in Fig 24). The Casual one makes the font look almost like the script style (third example in Fig 24). It’s the opposite of the Linear setting. The last one is cursive which changes some of the characters to the cursive variant (second example in Fig 24).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/cursive-recursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 24</strong>: Recursive is highly customisable, the cursive variant of the italic style looks great for comments." />
<figcaption>
<p>
<strong>Fig 24</strong>: Recursive is highly customisable, the cursive variant of the italic style looks great for comments.
</p>
</figcaption>
</figure>
<p>Here’s what Recursive looks like in action (Fig 25).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/inaction-recursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 25</strong>: Recursive is highly customisable, the cursive variant of the italic style looks great for comments." />
<figcaption>
<p>
<strong>Fig 25</strong>: Recursive is highly customisable, the cursive variant of the italic style looks great for comments.
</p>
</figcaption>
</figure>
<h3 id="coding-ligatures-4">Coding ligatures</h3>
<p>Recursive has a good range of coding ligatures but some look a bit off (Fig 26). The arrows, for example, don’t look that good.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/ligatures-recursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 26</strong>: Some of the arrows in Recursive could look better but other than that the coding ligatures look great." />
<figcaption>
<p>
<strong>Fig 26</strong>: Some of the arrows in Recursive could look better but other than that the coding ligatures look great.
</p>
</figcaption>
</figure>
<h3 id="x-height-5">X-height</h3>
<p>Recursive’s x-height also looks just a tiny bit smaller than that of Fira Code (Fig 27). That’s ok because Fira Code’s x-height is well-balanced for long-form reading.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/xheight-recursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 27</strong>: Side-by-side comparison of x-height — Recursive’s just a bit smaller than that of Fira Code." />
<figcaption>
<p>
<strong>Fig 27</strong>: Side-by-side comparison of x-height — Recursive’s just a bit smaller than that of Fira Code.
</p>
</figcaption>
</figure>
<h3 id="legibility-5">Legibility</h3>
<p>Recursive also has a potential legibility problem, as SF mono does (Fig 28). The number “1” looks similar to the lowercase “l.” They could be confused with each other. Other than that, Recursive’s legibility score is ok.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/5-more-monospaced-fonts/legibility-recursive.png,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 1.5x,
/assets/img/posts/5-more-monospaced-fonts/[email protected] 2x" src="/assets/img/posts/5-more-monospaced-fonts/[email protected]" alt="<strong>Fig 28</strong>: Recursive has a similar potential legibility problem because the number “1” looks similar to lowercase “l.”" />
<figcaption>
<p>
<strong>Fig 28</strong>: Recursive has a similar potential legibility problem because the number “1” looks similar to lowercase “l.”
</p>
</figcaption>
</figure>
<p><a href="https://github.com/arrowtype/recursive?utm_source=betterwebtype">Download Recursive →</a></p>
<h2 id="recap--comparison">Recap & comparison</h2>
<p>Here’s a quick recap of all the fonts and their features:</p>
<table>
<thead>
<tr>
<th>Font</th>
<th>Coding ligatures</th>
<th>X-height</th>
<th>Legibility</th>
<th>Extras</th>
</tr>
</thead>
<tbody>
<tr>
<td>Fira Code</td>
<td>Widest range</td>
<td>Regular</td>
<td>High</td>
<td>/</td>
</tr>
<tr>
<td>Commit Mono</td>
<td>Basic range</td>
<td>Regular</td>
<td>High</td>
<td>Smart kerning</td>
</tr>
<tr>
<td>Cascadia</td>
<td>Wide range</td>
<td>Regular</td>
<td>High</td>
<td>Cursive style</td>
</tr>
<tr>
<td>Victor Mono</td>
<td>Wide range</td>
<td>Slightly larger</td>
<td>Ok</td>
<td>/</td>
</tr>
<tr>
<td>SF Mono</td>
<td>Widest range</td>
<td>Slightly smaller</td>
<td>Some concerns</td>
<td>/</td>
</tr>
<tr>
<td>Recursive</td>
<td>Basic range</td>
<td>Regular</td>
<td>Some concerns</td>
<td>Variable cursive style</td>
</tr>
</tbody>
</table>
<p>And here’s a gallery of all of them for easier comparison:</p>
<div class="carousel__holder">
<div id="carousel0" class="carousel">
<input class="carousel__activator" type="radio" name="carousel0" id="0a" checked="checked" />
<input class="carousel__activator" type="radio" name="carousel0" id="0b" />
<input class="carousel__activator" type="radio" name="carousel0" id="0c" />
<input class="carousel__activator" type="radio" name="carousel0" id="0d" />
<input class="carousel__activator" type="radio" name="carousel0" id="0e" />
<input class="carousel__activator" type="radio" name="carousel0" id="0f" />
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0f"></label>
<label class="carousel__control carousel__control--forward" for="0b"></label>
</div>
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0a"></label>
<label class="carousel__control carousel__control--forward" for="0c"></label>
</div>
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0b"></label>
<label class="carousel__control carousel__control--forward" for="0d"></label>
</div>
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0c"></label>
<label class="carousel__control carousel__control--forward" for="0e"></label>
</div>
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0d"></label>
<label class="carousel__control carousel__control--forward" for="0f"></label>
</div>
<div class="carousel__controls">
<label class="carousel__control carousel__control--backward" for="0e"></label>
<label class="carousel__control carousel__control--forward" for="0a"></label>
</div>
<div class="carousel__track">
Fira Code
Commit Mono
Cascadia
Victor Mono
SF Mono
Recursive
<ul>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">Fira Code</span></li>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">Commit Mono</span></li>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">Cascadia</span></li>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">Victor Mono</span></li>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">SF Mono</span></li>
<li class="carousel__slide" style="background-image: url('/assets/img/posts/5-more-monospaced-fonts/[email protected]');">
<span class="carousel_label f-acumin f-s-14px">Recursive</span></li>
</ul>
</div>
<div class="carousel__indicators">
<label class="carousel__indicator" for="0a"></label>
<label class="carousel__indicator" for="0b"></label>
<label class="carousel__indicator" for="0c"></label>
<label class="carousel__indicator" for="0d"></label>
<label class="carousel__indicator" for="0e"></label>
<label class="carousel__indicator" for="0f"></label>
</div>
</div>
</div>
<style>
.carousel__holder {width: 100%; position: relative; padding-bottom: 50%; margin: 1rem 0 1rem;}
.carousel {
height: 100%;
width: 100%;
overflow: hidden;
text-align: center;
position: absolute;
padding: 0;
}
.carousel__controls,
.carousel__activator {
display: none;
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__track {
-webkit-transform: translateX(-000%);
transform: translateX(-000%);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__slide:nth-of-type(1) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__controls:nth-of-type(1) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(1):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(1) {
opacity: 1;
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__track {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__slide:nth-of-type(2) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__controls:nth-of-type(2) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(2):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(2) {
opacity: 1;
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__track {
-webkit-transform: translateX(-200%);
transform: translateX(-200%);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__slide:nth-of-type(3) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__controls:nth-of-type(3) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(3):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(3) {
opacity: 1;
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__track {
-webkit-transform: translateX(-300%);
transform: translateX(-300%);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__slide:nth-of-type(4) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__controls:nth-of-type(4) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(4):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(4) {
opacity: 1;
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__track {
-webkit-transform: translateX(-400%);
transform: translateX(-400%);
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__slide:nth-of-type(5) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__controls:nth-of-type(5) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(5):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(5) {
opacity: 1;
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__track {
-webkit-transform: translateX(-500%);
transform: translateX(-500%);
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__slide:nth-of-type(6) {
transition: opacity 0.5s, -webkit-transform 0.5s;
transition: opacity 0.5s, transform 0.5s;
transition: opacity 0.5s, transform 0.5s, -webkit-transform 0.5s;
top: 0;
left: 0;
right: 0;
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__controls:nth-of-type(6) {
display: block;
opacity: 1;
}
.carousel__activator:nth-of-type(6):checked ~ .carousel__indicators .carousel__indicator:nth-of-type(6) {
opacity: 1;
}
.carousel__control {
height: 30px;
width: 30px;
margin-top: -15px;
top: 50%;
position: absolute;
display: block;
cursor: pointer;
border-width: 5px 5px 0 0;
border-style: solid;
border-color: #fafafa;
opacity: 0.35;
opacity: 0.5;
outline: 0;
z-index: 3;
transition: all 0.3s ease;
}
.carousel__control:hover {
opacity: 1;
}
.carousel__control--backward {
left: 20px;
-webkit-transform: rotate(-135deg);
transform: rotate(-135deg);
}
.carousel__control--forward {
right: 20px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
.carousel__indicators {
position: absolute;
bottom: 20px;
width: 100%;
text-align: center;
margin-bottom: 0;
}
.carousel__indicator {
height: 15px;
width: 15px;
border-radius: 100%;
display: inline-block;
z-index: 2;
cursor: pointer;
opacity: 0.35;
margin: 0 2.5px 0 2.5px;
transition: all 0.3s ease;
}
.carousel__indicator:hover {
opacity: 0.5;
}
.carousel__track {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 0;
margin: 0;
transition: -webkit-transform 0.5s ease 0s;
transition: transform 0.5s ease 0s;
transition: transform 0.5s ease 0s, -webkit-transform 0.5s ease 0s;
}
.carousel__track .carousel__slide {
display: block;
top: 0;
left: 0;
right: 0;
opacity: 1;
}
.carousel__track .carousel__slide:nth-of-type(1) {
-webkit-transform: translateX(000%);
transform: translateX(000%);
}
.carousel__track .carousel__slide:nth-of-type(2) {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.carousel__track .carousel__slide:nth-of-type(3) {
-webkit-transform: translateX(200%);
transform: translateX(200%);
}
.carousel__track .carousel__slide:nth-of-type(4) {
-webkit-transform: translateX(300%);
transform: translateX(300%);
}
.carousel__track .carousel__slide:nth-of-type(5) {
-webkit-transform: translateX(400%);
transform: translateX(400%);
}
.carousel__track .carousel__slide:nth-of-type(6) {
-webkit-transform: translateX(500%);
transform: translateX(500%);
}
.carousel--scale .carousel__slide {
-webkit-transform: scale(0);
transform: scale(0);
}
.carousel__slide {
height: 100%;
position: absolute;
opacity: 0;
overflow: hidden;
}
.carousel_label {
color: #fff;
position: relative;
top: 8px;
}
.carousel__slide .overlay {height: 100%;}
.carousel--thumb .carousel__indicator {
height: 30px;
width: 30px;
}
.carousel__indicator {
background-color: #fafafa;
}
.carousel__slide:nth-of-type(1),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(1) {
background-size: cover;
background-position: center;
}
.carousel__slide:nth-of-type(2),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(2) {
background-size: cover;
background-position: center;
}
.carousel__slide:nth-of-type(3),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(3) {
background-size: cover;
background-position: center;
}
.carousel__slide:nth-of-type(4),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(4) {
background-size: cover;
background-position: center;
}
.carousel__slide:nth-of-type(5),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(5) {
background-size: cover;
background-position: center;
}
.carousel__slide:nth-of-type(6),
.carousel--thumb .carousel__indicators .carousel__indicator:nth-of-type(6) {
background-size: cover;
background-position: center;
}
</style>
<script>
function isVisible(el) {
while (el) {
if (el === document) {
return true;
}
var $style = window.getComputedStyle(el, null);
if (!el) {
return false;
} else if (!$style) {
return false;
} else if ($style.display === 'none') {
return false;
} else if ($style.visibility === 'hidden') {
return false;
} else if (+$style.opacity === 0) {
return false;
} else if (($style.display === 'block' || $style.display === 'inline-block') &&
$style.height === '0px' && $style.overflow === 'hidden') {
return false;
} else {
return $style.position === 'fixed' || isVisible(el.parentNode);
}
}
}
</script>
<h2 id="should-you-even-use-coding-ligatures">Should you even use coding ligatures?</h2>
<p>Matthew Butterick from Practical Typography wrote an article sharing his strong-held opinion against coding ligatures. He even argues that using them isn’t a matter of taste because they can cause confusion. Butterick brings up two main reasons against using coding ligatures: They contradict Unicode, and they’re guaranteed to be wrong sometimes.</p>
<blockquote>
<p>Ligatures in programming fonts are a terrible idea. <br />
— Matthew Butterick (<a href="https://practicaltypography.com/ligatures-in-programming-fonts-hell-no.html">Source</a>)</p>
</blockquote>
<p>Should you use coding ligatures? I think this is a personal choice after all. I use them, and I love them. But I’m not a hardcore programmer and I work on my code by myself. Make sure you read Butterick’s article to make an informed decision, especially if you collaborate on code with others.</p>
<hr />
<p>To get back to the question from the beginning of this article — which font do you use for coding? My favourite remains <em>JetBrains Mono</em>. What do you think about the ones in my examination? Did you find your new favourite one? Did I miss any? Let me know in the comments below! 👇</p>
<section class="widget alignCenter no-padding-bottom">
<h3 class="h2 max-width-500px floatCenter">Better Web Typography for a Better Web</h3>
<p class="uppercase f-acumin">Free Course</p>
<p class="f-acumin max-width-500px floatCenter">Join 30,000+ designers and developers, get 7 free lessons and unlock your better web typography skills. </p>
<a href="/" class="button floatCenter" id="course-widget-cta">Learn more →</a>
<p class="small f-acumin floatCenter">Just cool web typography stuff, no spam.</p>
<img srcset="
/assets/img/course/course-widget-image.png,
/assets/img/course/[email protected] 1.5x,
/assets/img/course/[email protected] 2x" src="/assets/img/course/course-widget-image.png" alt="Example lesson" class="floatCenter no-bottom-margin" />
</section>Matej LatinI only switched from the default font when I switched from Sublime Text to Visual Studio a few years ago. That’s when I wrote the original blog post about 5 monospaced fonts with coding ligatures. I was customising Visual Studio’s theme and wanted something different. I wanted to make the setup more “mine.”Is AI better at picking and pairing fonts than you?2023-09-09T09:02:53+00:002023-09-09T09:02:53+00:00https://betterwebtype.com/is-AI-better-at-picking-and-pairing-fonts-than-you<p>How do you go about picking fonts for a project? Do you just “wing it?” Pick something that looks good and is somewhat aligned with the requirements of the project? Or do you always use the same fonts again and again, regardless of requirements? Maybe you have a personal preference for some of these fonts?</p>
<p>And how do you pair fonts? Just pick two that look relatively good together? Or do you make an effort to use the basic font pairing guidelines by trying to match their x-height, for example? Do you go for a safe choice and just use a superfamily of fonts like Roboto and Roboto Serif?</p>
<p>Picking and pairing fonts really well is hard. It takes a lot of time too, especially if you don’t have experience with it. Can AI tools help you do this task better and quicker? Can it teach you how to do it well, if you’re less experienced?</p>
<p>Let’s take a look at a couple of tools that use AI for font picking and pairing. How good are they? Are they better than you and can you learn from them?</p>
<h2 id="fontjoy">Fontjoy</h2>
<p><a href="https://fontjoy.com/?ref=betterwebtype">Fontjoy</a> uses machine learning and a deep learning model to map font features and come up with pairings. Its’ <a href="https://fontjoy.com/pairing/">description of how it works</a> isn’t very detailed and it doesn’t disclose how many font features the tool uses for evaluation.</p>
<p>I can pick a font that I want to start with for headings or body text. I picked Raleway Bold for headings. Then I can lock the font I picked, and decide what type of pairing I want — a contrasting one or a similar one. There are five options: <em>high contrast</em>, <em>more contrast</em>, <em>balanced</em>, <em>more similar</em>, and <em>very similar</em>. I chose high contrast and hit the <em>Generate</em> button with high expectations.</p>
<p>The first pairing it gives me is… surprisingly good. It suggests I combine it with <em>Arapey</em> for subtitles and <em>Hind Guntur</em> for body text (<strong class="f-acumin">Fig 1</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/fontjoy-01.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 1</strong>: The first recommendation from Fontjoy is surprisignly good. It recommends to pair Raleway with Arapey and Hind Guntur." />
<figcaption>
<p>
<strong>Fig 1</strong>: The first recommendation from Fontjoy is surprisignly good. It recommends to pair Raleway with Arapey and Hind Guntur.
</p>
</figcaption>
</figure>
<p>I click <em>Generate</em> again and complete disappointment follows. It now says that I should use <em>Snowburst One</em> for subtitles and <em>Scope One</em> for body text (<strong class="f-acumin">Fig 2</strong>). The latter is a decent recommendation, but the one for the subtitles is a total miss. I can’t help but lose confidence in the capabilities of the tool.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/fontjoy-02.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 2</strong>: The second recommendation is a total miss." />
<figcaption>
<p>
<strong>Fig 2</strong>: The second recommendation is a total miss.
</p>
</figcaption>
</figure>
<p>I click the <em>Generate</em> button a couple more times. The tool gives more options but they feel somewhat limited. I’m not sure whether that’s good or bad. Some font suggestions repeat numerous times. I guess it’s good because the tool zeroed into the font pairings that work well. It feels that one in six suggestions includes a total miss. I define a total miss as something I would never use, mostly because it suggests a decorative font, like Snowburst One above (<strong class="f-acumin">Fig 2</strong>).</p>
<p>I also consider a total miss the suggestion to use <em>Montserrat Alternatives</em> for body text (<strong class="f-acumin">Fig 3</strong>). It has too much character to be used for that.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/fontjoy-03.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 3</strong>: The third recommendation is also a total miss." />
<figcaption>
<p>
<strong>Fig 3</strong>: The third recommendation is also a total miss.
</p>
</figcaption>
</figure>
<p>But how could the tool know something like this? Is character design one of the features considered? It can’t be. That’s something an experienced designer considers — the tiniest details in the letter design of a font. Is it legible and will it improve the readability? In the case of <em>Montserrat Alternatives</em>, it does the opposite.</p>
<p class="f-acumin"><strong>Fontjoy Pros:</strong> </p>
<ul>
<li>Can come up with decent font pairings suggestions once you already have one font picked (for either headings or body text)</li>
</ul>
<p class="f-acumin"><strong>Fontjoy Cons:</strong> </p>
<ul>
<li>Starting completely from scratch, without a font already picked, isn’t very useful</li>
<li>No font picking capabilities, just pairing</li>
<li>Includes low-quality fonts which are the main contributors to “total miss” pairings</li>
<li>There’s no meaning to the choices, the tool pairs fonts based on the contrast settings provided</li>
<li>No way to tell the tool what the fonts will be used for — there’s no context to its suggestions</li>
</ul>
<h3 id="other-similar-tools">Other similar tools</h3>
<p>There are two more similar tools, but it’s unclear how they work so I didn’t explore them in detail:</p>
<ul>
<li><a href="https://designs.ai/fonts/">designs.ai/fonts/</a></li>
<li><a href="https://monotype.com/font-pairing">monotype.com/font-pairing</a></li>
</ul>
<h2 id="chatgpt">ChatGPT</h2>
<p>Now let’s take a closer look at the tool that everyone has been raving about — ChatGPT. Can it pick and pair fonts well? Is it comparable to a designer’s capabilities?</p>
<h3 id="font-pairing">Font pairing</h3>
<p>I came up with a simple prompt to test the <em>ChatGPT’s</em> capabilities of font pairing:</p>
<blockquote>
<p>Come up with a pairing of two fonts for a website of a female author writing about motherhood. It needs to feel modern and candid.</p>
</blockquote>
<p>I generated five suggestions, let’s take a closer look at the first three. The first one that <em>ChatGPT</em> suggested was <em>Montserrat Bold</em> for headings and <em>Cormorant Garamond Regular</em> for body text. Here’s how it explained its decision (<strong class="f-acumin">Fig 4</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-prompt-01.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 4</strong>: An explanation of ChatGPT’s recommendation to pair Montserrat and Cormorant Garamond." />
<figcaption>
<p>
<strong>Fig 4</strong>: An explanation of ChatGPT’s recommendation to pair Montserrat and Cormorant Garamond.
</p>
</figcaption>
</figure>
<p>And this is what this font pairing would look like (<strong class="f-acumin">Fig 5</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-rec-01.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 5</strong>: What ChatGPT’s recommendation to pair Montserrat and Cormorant Garamond looks like." />
<figcaption>
<p>
<strong>Fig 5</strong>: What ChatGPT’s recommendation to pair Montserrat and Cormorant Garamond looks like.
</p>
</figcaption>
</figure>
<p>The second suggestion was <em>Playfair Display Italic</em> for headings and <em>Raleway Regular</em> or <em>Light</em> for body text. Here’s why it chose these fonts (<strong class="f-acumin">Fig 6</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-prompt-02.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 6</strong>: An explanation of ChatGPT’s recommendation to pair Playfair Display and Raleway." />
<figcaption>
<p>
<strong>Fig 6</strong>: An explanation of ChatGPT’s recommendation to pair Playfair Display and Raleway.
</p>
</figcaption>
</figure>
<p>I could count the <em>Light</em> weight for body text as a “total miss” because light fonts aren’t good for longer texts. They’re too hard to read. Let’s use the regular weight, here’s what this font pairing would look like (<strong class="f-acumin">Fig 7</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-rec-02.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 7</strong>: What ChatGPT’s recommendation to pair Playfair Display and Raleway looks like." />
<figcaption>
<p>
<strong>Fig 7</strong>: What ChatGPT’s recommendation to pair Playfair Display and Raleway looks like.
</p>
</figcaption>
</figure>
<p>The last suggestion that we’ll examine is <em>Montserrat</em> for headings and <em>Lora</em> for body text. Here’s why <em>ChatGPT</em> thinks this is a good combination for this prompt (<strong class="f-acumin">Fig 8</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-prompt-03.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 8</strong>: An explanation of ChatGPT’s recommendation to pair Montserrat and Lora." />
<figcaption>
<p>
<strong>Fig 8</strong>: An explanation of ChatGPT’s recommendation to pair Montserrat and Lora.
</p>
</figcaption>
</figure>
<p>It doesn’t specify the weights in this suggestion so I used Regular for both. This is what it would look like (<strong class="f-acumin">Fig 9</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-rec-03.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 9</strong>: What ChatGPT’s recommendation to pair Montserrat and Lora looks like." />
<figcaption>
<p>
<strong>Fig 9</strong>: What ChatGPT’s recommendation to pair Montserrat and Lora looks like.
</p>
</figcaption>
</figure>
<p>All these font pairing suggestions are good, except for the “total miss” where it suggested a light font for body text. They’re not very original, and they’re somewhat repetitive (it really likes <em>Montserrat</em> for this prompt), but they could be a good starting point for a designer learning to get better at this. For a non-designer, these <em>could</em> be good to go.</p>
<p>Here’s what I like about it. If a non-designer used <em>ChatGPT</em> they would come up with a good font selection and pairing, probably a much better one than if they did it themselves. New websites where designers aren’t involved with their creation would finally have decent typography.</p>
<h3 id="font-picking">Font picking</h3>
<p>The last thing I wanted to test was <em>ChatGPT’s</em> font-picking capabilities. I came up with a prompt — <em>What is a good open-source font for headings that can be described as feminine, modern, and candid?</em></p>
<p>I generated three answers, two of them were <em>Quicksand</em> (<strong class="f-acumin">Top in Fig 10</strong>), and the other one was <em>Cormorant</em> (<strong class="f-acumin">Bottom in Fig 10</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-font-pick-00.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 10</strong>: ChatGPT’s recommendation of pairing Quicksand with Cormorant." />
<figcaption>
<p>
<strong>Fig 10</strong>: ChatGPT’s recommendation of pairing Quicksand with Cormorant.
</p>
</figcaption>
</figure>
<p><em>Quicksand</em> is not what I had imagined at all but it’s a viable option, not a “total miss.” <em>Cormorant</em> on the other hand is an interesting recommendation. Here’s what this pairing looks like (<strong class="f-acumin">Fig 11</strong>):</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/fig11.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 11</strong>: A pairing of Quicksand for headings and Cormorant for body text." />
<figcaption>
<p>
<strong>Fig 11</strong>: A pairing of Quicksand for headings and Cormorant for body text.
</p>
</figcaption>
</figure>
<p>And here are <em>ChatGPT’s</em> explanations on why it picked these fonts (<strong class="f-acumin">Fig 12</strong>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chatgpt-font-pick-01.jpg,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 12</strong>: ChatGPT’s Explanations on why it chose Quicksand and Cormorant fonts to be paired." />
<figcaption>
<p>
<strong>Fig 12</strong>: ChatGPT’s Explanations on why it chose Quicksand and Cormorant fonts to be paired.
</p>
</figcaption>
</figure>
<p>A less experienced designer could explore further and try out different weights of Cormorant. Again, it’s a good starting point, but does this replace an experienced designer?</p>
<p>To become truly powerful <em>ChatGPT</em> would need to be trained on knowledge from experienced designers. But right now it can’t know what knowledge is good, it just learns from everything it was given to train on. Here’s a short description of how <em>ChatGPT</em> learns:</p>
<blockquote>
<p>All the tokens came from a massive corpus of data written by humans. That includes books, articles, and other documents across all different topics, styles, and genres—and an unbelievable amount of content scraped from the open internet. Basically, it was allowed to crunch through the sum total of human knowledge. <br />
(<a href="https://zapier.com/blog/how-does-chatgpt-work/">Source</a>)</p>
</blockquote>
<p class="f-acumin"><strong>ChatGPT Pros:</strong> </p>
<ul>
<li>Very few “total misses”</li>
<li>Unlike other tools, it can give meaningful recommendations based on what you’re designing for</li>
<li>A decent starting point for non-designers and less experienced designers</li>
</ul>
<p class="f-acumin"><strong>ChatGPT Cons:</strong> </p>
<ul>
<li>It’s limited — based on the knowledge it was trained on up to September 2021</li>
<li>Based on vast data of human knowledge — not all of it is good</li>
<li>The font picks and pairings are basic and not very original</li>
</ul>
<h2 id="conclusion-can-ai-pick-and-pair-fonts-well">Conclusion: Can AI pick and pair fonts well?</h2>
<p>Let’s try to answer the question from the beginning of the article — can AI do this task well for us? In other words, can AI come up with original, contextual, and high-quality font picks and pairings? My answer right now is no. Not yet, at least. I predict that AI’s capabilities will continue to grow and one day it’ll be able to do it well. Will it be able to replace an experienced designer? I don’t think so. Not fully. And at least not very soon. But it may help speed up that experienced designer’s work and it will speed up the learning process for less experienced ones.</p>
<p>Font pairing is more than just fonts. <em>Fontjoy</em> picks font pairings based on font characteristics, like font weight and obliqueness. That’s not enough.</p>
<p>Here’s what an experienced designer will consider when choosing a font:</p>
<ol>
<li>What is the goal of the text/website?</li>
<li>What feelings does the author want to evoke?</li>
<li>How do the visual font properties align with the message of the content?</li>
<li>Does it look original but still follow the main typographic conventions?</li>
<li>The overall construction of the font</li>
<li>The construction of key characters — are they legible?</li>
<li>What it looks like with the actual content and language to be used</li>
<li>What it looks like at larger sizes (for headings), different weights and styles</li>
<li>Is it readable at body text size?</li>
<li>Does a visual font property stand out in a bad way?</li>
</ol>
<p>Notice how the questions go from broad to very specific. That’s because font picking is an involved decision process, not a quick act based on some font characteristics like it is in <em>Fontjoy</em>.</p>
<figure>
<blockquote>
<div class="quote-wrap">
<p>Font picking is an involved decision process, not a quick act based on some font characteristics like it is in Fontjoy.</p>
</div>
</blockquote>
</figure>
<p>All this culminates in two major aspects of evaluating font choices — <em>meaning</em> (questions 1–4) and <em>visual</em> (questions 5–10). Because fonts are tools for visual communication, accessibility belongs to the visual aspects. Tools like <em>Fontjoy</em> are completely focused (and stronger) on the visual side, and <em>ChatGPT</em> is somewhere between meaning and visual (<strong class="f-acumin">Fig 12</strong>). <em>Fontjoy</em> actually compares the characteristics of fonts to pair them, <em>ChatGPT</em> doesn’t. It assumes that fonts go well together because humans have paired them in the past. A mix between the two tools would be ideal.</p>
<figure class="regular-image">
<!-- <img src="/assets/img/posts/ai-better-than-you/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/ai-better-than-you/chart.png,
/assets/img/posts/ai-better-than-you/[email protected] 1.5x,
/assets/img/posts/ai-better-than-you/[email protected] 2x" src="/assets/img/posts/ai-better-than-you/[email protected]" alt="<strong>Fig 12</strong>: A visual presentation of current AI tools capabilities compared to the two aspects of picking fonts — visual and meaning." />
<figcaption>
<p>
<strong>Fig 12</strong>: A visual presentation of current AI tools capabilities compared to the two aspects of picking fonts — visual and meaning.
</p>
</figcaption>
</figure>
<p>Neither is in the top right corner of the chart where a perfect solution would be, but <em>ChatGPT</em> has the potential to improve. Right now it can come up with suggestions based on adjectives we include in our prompt — modern, feminine, candid. But to match, or even beat an experienced designer, it’ll need to get way better than that.</p>
<p>I discussed this with Mike Zetlow, an experienced designer who raised an important point — brands are not just a couple of adjectives. Here’s what he said:</p>
<blockquote>
<p>Brands are more subtle than a couple of adjectives. I don’t start picking fonts until we’ve got 100% of the copy and image assets. Between the copy, brand guidelines, brand history, markets’ perception of the brand, and brand image assets, there is a lot of nuance and it’s a big job of taking all that information and making a creative decision as to which font best represents all that. Granted, a quick solution like Raleway above will work for someone starting their own blog, but for my use cases, the decision is much more involved.</p>
</blockquote>
<p>The state of AI’s font picking and pairing capabilities is at the stage of a junior designer. So if you’re a designer and answered “yes” to most questions from the beginning of this article, or you’re a non-designer, yeah the AI can pick and pair fonts better than you. But that’s great because it makes better typography more accessible for non-designers. It also makes quicker learning possible for inexperienced designers. Both will significantly contribute to overall better web typography.</p>
<hr />
<p>If you want to learn how to pick and pair fonts really well, <a href="/">my free email course is a good starting point</a>. What do you think? Will AI ever be able to do this well? Let me know in the comments below 👇</p>
<section class="widget alignCenter no-padding-bottom">
<h3 class="h2 max-width-500px floatCenter">Better Web Typography for a Better Web</h3>
<p class="uppercase f-acumin">Free Course</p>
<p class="f-acumin max-width-500px floatCenter">Join 30,000+ designers and developers, get 7 free lessons and unlock your better web typography skills. </p>
<a href="/" class="button floatCenter" id="course-widget-cta">Learn more →</a>
<p class="small f-acumin floatCenter">Just cool web typography stuff, no spam.</p>
<img srcset="
/assets/img/course/course-widget-image.png,
/assets/img/course/[email protected] 1.5x,
/assets/img/course/[email protected] 2x" src="/assets/img/course/course-widget-image.png" alt="Example lesson" class="floatCenter no-bottom-margin" />
</section>Matej LatinHow do you go about picking fonts for a project? Do you just “wing it?” Pick something that looks good and is somewhat aligned with the requirements of the project? Or do you always use the same fonts again and again, regardless of requirements? Maybe you have a personal preference for some of these fonts?8 micro tips for remarkably better typography2023-09-02T09:02:53+00:002023-09-02T09:02:53+00:00https://betterwebtype.com/8-mirco-tips-for-remarkably-better-typography<p>But I don’t want to get into that in this blog post. Yes, it takes a lot of time and effort to craft beautiful and original typography but what if you don’t have the time? What if you want to quickly improve the typography on your website in just a matter of minutes?</p>
<p>Today I want to show you how you can make your typography remarkable with 8 micro tips in less than 8 minutes. Let’s go!</p>
<h2 class="h4">1. How lightening your font weights on a dark background can improve aesthetics and readability</h2>
<p>Two things became popular in the design industry lately — dark modes and variable fonts. But most websites make this mistake when they add a dark mode. They keep the font weights intact. If a heading is set in bold on light mode, it’ll have the same weight when the user switches to dark mode.</p>
<p>This is a problem because light text on a dark background looks heavier. It looks unpolished and can even impact the readability of the text (left example in <span class="f-acumin"><strong>Fig 1</strong></span>). My recommendation is to consider using a variable font and adjusting the font weight in dark mode. Reduce it by 50. So if the font is set to bold in light mode (bold equals 700), reduce it to 650 (right example in <span class="f-acumin"><strong>Fig 1</strong></span>). Now your text looks refined and it’s easier on the eye, which means it’s easier to read.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/01-dark-bg-font-weight.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 1</strong>: A comparison of weight 700 versus 650 on a dark background." />
<figcaption>
<p>
<strong>Fig 1</strong>: A comparison of weight 700 versus 650 on a dark background.
</p>
</figcaption>
</figure>
<h2 class="h4">2. Why reducing the line height of headings drastically improves their appearance</h2>
<p>Here’s the thing with headings — they’re generally short. Usually one line of text, sometimes two. In extreme cases, they break into three lines. But that’s it. A line height of around 140% is recommended for body text, so full paragraphs. When the same is applied to headings it looks like the lines are drifting apart. Like they don’t belong together (left example in Fig 2). Reduce the line height of headings to somewhere between 110 and 120%. The headings will look more compact, cohesive and polished (right example in <span class="f-acumin"><strong>Fig 2</strong></span>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/02-heading-line-height.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 2</strong>: Large line height in a heading versus a smaller one" />
<figcaption>
<p>
<strong>Fig 2</strong>: Large line height in a heading versus a smaller one
</p>
</figcaption>
</figure>
<h2 class="h4">3. How using open-type features can make your fonts look more original</h2>
<p>Open-type features are becoming increasingly popular. This is great because it also means that more and more fonts support them. One of my favourites is stylistic alternates. The type designer who designed the font is giving you the option to use alternative symbols. Most commonly these are alternative designs for letters “a” “g” and “t.”</p>
<p>Don’t use the font as it is out-of-the-box. Check if there are open-type settings that you can use to make it look more original. Below, I’m using Satoshi out-of-the-box on the left (<span class="f-acumin"><strong>Fig 3</strong></span>) and with stylistic alternates on the right.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/03-open-type-features.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 3</strong>: Stylistic alternates versus default character designs." />
<figcaption>
<p>
<strong>Fig 3</strong>: Stylistic alternates versus default character designs.
</p>
</figcaption>
</figure>
<h2 class="h4">4. Don’t be afraid to use uppercase, but when you do letter-space it</h2>
<p>Everyone already knows that words written in uppercase are hard to read. So it seems everyone just stopped using it completely. It’s ok to use uppercase in small amounts. It helps separate different parts of content or UI. It’s a cool way to emphasise something without using bold or italics.</p>
<p>I use uppercase for showing the category of the article below (<span class="f-acumin"><strong>Fig 4</strong></span>). Notice the difference between the left example which isn’t letter-spaced and the right one which is. Letter-spacing uppercase words helps improve readability and it also makes your designs look more refined. I recommend letter spacing up to 5%. Always, ALWAYS letter-space uppercase.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/04-letterspacing-uppercase.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 4</strong>: Letter-spacing uppercase words improves their readability." />
<figcaption>
<p>
<strong>Fig 4</strong>: Letter-spacing uppercase words improves their readability.
</p>
</figcaption>
</figure>
<h2 class="h4">5. Use the subtlety of old-style figures to make your text free of distractions and easier to read</h2>
<p>The most experienced designers will refuse to use a font for body text if a character stands out too much. I’ll give you an example — I once decided not to use a font because the lowercase letter “g” had an unusual, weird descender (the bottom part of the letter). It stood out too much, you just couldn’t help but notice it — it was a distraction. You don’t want that. You want your readers to be completely consumed by the content.</p>
<p>The same applies to numbers in your text. When they’re set in lining figures (usually the default style in fonts) they stand out too much (left example in <span class="f-acumin"><strong>Fig 5</strong></span>). As the readers progress through the lines of text, they can’t help but notice these numbers before they get to them. They get distracted and it becomes harder to read.</p>
<p>Old-style figures are the lowercase alternative. They go along well with lowercase text and don’t stand out. Very few websites and apps go as far as to take care of this typographic detail. So if you do, you’re website will be typographically refined and stand out in its subtlety. The subtlety that only type geeks will notice but your readers will unknowingly appreciate.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/05-oldstyle-figures.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 5</strong>: Old-style figures blend in with the text in a paragraph, lining figures stand out (too much)." />
<figcaption>
<p>
<strong>Fig 5</strong>: Old-style figures blend in with the text in a paragraph, lining figures stand out (too much).
</p>
</figcaption>
</figure>
<h2 class="h4">6. Make your acronyms fit in with small caps</h2>
<p>This is the same as tip number five above but for letters. Or more precisely, acronyms. Let’s try something out, I’ll write CIA here to prove my point. I’m 100% sure that you noticed the “CIA” sometime when you started reading this paragraph (maybe you didn’t notice it but your eyes surely drifted to it for a fraction of a second).</p>
<p>That’s way too early and if this paragraph was full of acronyms like that, it would be full of distractions. Your eyes just can’t help but notice them and be attracted to them. So the text you’re reading becomes harder to read. If your font supports them, use small caps to eliminate the distractions in your text and make it easier to read.</p>
<p>I’m using Meta Serif Pro below and no small caps in the example on the left (<span class="f-acumin"><strong>Fig 6</strong></span>) and with small caps enabled in the example on the right.</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/06-small-caps.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 6</strong>: Small caps blend in with the texture of the paragraph perfectly." />
<figcaption>
<p>
<strong>Fig 6</strong>: Small caps blend in with the texture of the paragraph perfectly.
</p>
</figcaption>
</figure>
<p><span class="f-acumin"><strong>Bonus tip:</strong></span> don’t use “fake small caps!” If a font doesn’t support small caps but you force-enable them, fake small caps will be used. Fake small caps are just resized capital letters and look way too light compared to the rest of the text. This is even worse than just using normal uppercase letters.<a href="https://codepen.io/matejlatin/full/BZgPjZ/"> See a live example here</a>.</p>
<h2 class="h4">7. Use ligatures to improve the aesthetics and readability of your text</h2>
<p>Ligatures in typography prevent unattractive clashes between certain letters. “fi” “fl” “ffi” are typical examples. This is more on the aesthetics side than readability but in some fonts, these clashes might be so obvious that even normal people (i.e. not type geeks) will notice them. And as you already saw, readers aren’t supposed to notice typographic details. If they do, the designer has failed. All they need to see is the content. In some cases, ligatures may even add a bit of character and originality to your typography (see the example in the title in <span class="f-acumin"><strong>Fig 7</strong></span>).</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-tips/07-ligatures.jpg,
/assets/img/posts/8-tips/[email protected] 1.5x,
/assets/img/posts/8-tips/[email protected] 2x" src="/assets/img/posts/8-tips/[email protected]" alt="<strong>Fig 7</strong>: Ligatures look great but blend in subtly with the text, improving the readability in the process." />
<figcaption>
<p>
<strong>Fig 7</strong>: Ligatures look great but blend in subtly with the text, improving the readability in the process.
</p>
</figcaption>
</figure>
<h2 class="h4">8. Align your icons to the line height of the label</h2>
<p>I see this mistake all the time. Designers often try to align the bottom of the icon to the baseline of the label (left example in <span class="f-acumin"><strong>Fig 8</strong></span>). It’s how you align everything in typography right? The baseline is the grid that you work with. No, not really. When it comes to aligning icons to text, it’s better to match and align the height of the icon to the line height of the text (right example in <span class="f-acumin"><strong>Fig 8</strong></span>). If done right, the vertical centre of the icon should align perfectly with the middle of the uppercase “X.”</p>
<figure class="full-bleed-image">
<!-- <img src="/assets/img/posts/8-more-tips/[email protected]" alt=""> -->
<img srcset="/assets/img/posts/8-more-tips/06-icon-alignment.jpg,
/assets/img/posts/8-more-tips/[email protected] 1.5x,
/assets/img/posts/8-more-tips/[email protected] 2x" src="/assets/img/posts/8-more-tips/[email protected]" alt="<strong>Fig 8</strong>: Icon alignment done right — match and align its size to the line height of the text label." />
<figcaption>
<p>
<strong>Fig 8</strong>: Icon alignment done right — match and align its size to the line height of the text label.
</p>
</figcaption>
</figure>
<h2 class="h4">Typography is so much more than just tips</h2>
<p>These eight tips are great to get you started. They’ll drastically improve your typography but they’re just the tip of the iceberg (pun intended). Great typography, meaning typography that blends perfectly with the content, consumes the reader completely, and makes a text easy to read, requires a holistic approach. You should always start with the content that you’re designing for. Not by choosing a font, and not using Lorem Ipsum as placeholder text. You should choose a font that matches the content of the website, not just a random font.</p>
<p>And this is just an example from the beginning. Then you need to know how to pair fonts, shape perfect paragraphs for easier reading, use scales to define a system of font sizes, use vertical and horizontal rhythm correctly, compose interesting and original page compositions, and make it responsive on top of all that. If you want to learn about this holistic approach to typography, check out my free course <a href="/">Better Web Type</a>. If you sign up, you’ll also be notified about part 2 of this 2-part blog post series.</p>
<section class="widget alignCenter no-padding-bottom">
<h3 class="h2 max-width-500px floatCenter">Better Web Typography for a Better Web</h3>
<p class="uppercase f-acumin">Free Course</p>
<p class="f-acumin max-width-500px floatCenter">Join 30,000+ designers and developers, get 7 free lessons and unlock your better web typography skills. </p>
<a href="/" class="button floatCenter" id="course-widget-cta">Learn more →</a>
<p class="small f-acumin floatCenter">Just cool web typography stuff, no spam.</p>
<img srcset="
/assets/img/course/course-widget-image.png,
/assets/img/course/[email protected] 1.5x,
/assets/img/course/[email protected] 2x" src="/assets/img/course/course-widget-image.png" alt="Example lesson" class="floatCenter no-bottom-margin" />
</section>Matej LatinBut I don’t want to get into that in this blog post. Yes, it takes a lot of time and effort to craft beautiful and original typography but what if you don’t have the time? What if you want to quickly improve the typography on your website in just a matter of minutes?Fallback Font Generator2023-06-08T16:46:56+00:002023-06-08T16:46:56+00:00https://betterwebtype.com/fallback-font-generator<p>Brian Louis Ramirez</p>Brian Louis RamirezBrian Louis RamirezModern Fluid Typography Editor2023-06-08T16:46:56+00:002023-06-08T16:46:56+00:00https://betterwebtype.com/modern-fluid-typography-editor<p>Adrian Bece</p>Adrian BeceAdrian BeceWhatTheFont2023-06-08T16:46:56+00:002023-06-08T16:46:56+00:00https://betterwebtype.com/whatthefont<p>myfonts.com</p>myfonts.commyfonts.comModern Font Stack2023-03-31T16:46:56+00:002023-03-31T16:46:56+00:00https://betterwebtype.com/modern-font-stack<p>Dan Klammer, Coling Gourlay, Troy J. Farrell, Pete Cooper</p>Dan Klammer, Coling Gourlay, Troy J. Farrell, Pete CooperDan Klammer, Coling Gourlay, Troy J. Farrell, Pete CooperCool new stuff in web typography in July ’212021-07-26T13:45:24+00:002021-07-26T13:45:24+00:00https://betterwebtype.com/cool-new-stuff-in-web-typography-in-july-21<p>how are things? My newsletter is a bit late this month. We recently got a puppy and a kitten and they’ve been keeping me busy. We’re currently working on introducing them so that they become friends. They both brought a lot of fun back into our lives. I’ll post some photos of them soon!</p>
<h2 class="h3">News</h2>
<p>🚀 My new online UX portfolio course <a href="https://uxbuddy.co/">UX Buddy</a> is coming back in August. It’s another early access release with additional 20 seats up for purchase. Last time they sold out very quickly! 😲 <a href="https://uxbuddy.co/">Join the waitlist</a> to get notified of the exact day and time of the release.</p>
<p>📖 The Better Web Type book is on sale! <a href="https://betterwebtype.com/web-typography-book-offer/?e=1&r=25">Get 40% off</a> for a limited time!</p>
<h2 class="h3">Featured</h2>
<h4 id="pairing-fonts--3-ways-to-find-great-typeface-combinations">Pairing fonts – 3 ways to find great typeface combinations</h4>
<p>Oliver is back with another video & article combo on combining fonts. I always enjoy his videos because they’re really well made and they provide great content as well.</p>
<p><a href="https://pimpmytype.com/pairing-fonts/?ref=betterwebtype">Read more →</a></p>
<h2 class="h3">Font of the month</h2>
<figure class="regular-image">
<!-- <img src="/assets/img/newsletter/032/[email protected]" alt=""> -->
<img srcset="/assets/img/newsletter/032/font.jpg,
/assets/img/newsletter/032/[email protected] 1.5x,
/assets/img/newsletter/032/[email protected] 2x" src="/assets/img/newsletter/032/[email protected]" alt="" />
<figcaption>
<p>
</p>
</figcaption>
</figure>
<h4 id="anderson-grotesk"><strong>Anderson Grotesk</strong></h4>
<p>I found this free font the other day and liked it immediately. It has a Bauhaus feel to it, reminds of Helvetica but also feels more modern, geometric and chunkier. It looks great when used for huge headings and titles. It comes in 4 styles and they all come with the italic design as well.</p>
<p><a href="https://www.behance.net/gallery/58071711/Anderson-Grotesk-A-free-font-family">Check it out →</a></p>
<h2 class="h3">Cool Articles</h2>
<p><a href="https://pixelambacht.nl/2021/optical-size-hidden-superpower/?ref=betterwebtype">Optical size, the hidden superpower of variable fonts</a><br />
I didn’t know that variable fonts have the optical sizing setting. This article explains clearly why it’s needed an how to use it. I’ll give it a try too!</p>
<p><a href="https://baselinehq.com/blog/confusing-embarrassing-sign-designs-text-mistakes-by-designers.html?ref=betterwebtype">When Designing With Text, Don’t Make This Embarrassing Mistake</a><br />
You’ll have a good laugh when going through some of the examples in this article. I did 😂</p>
<p><a href="https://fontsinuse.com/uses/33983/i-love-ny?ref=betterwebtype">I ❤️ NY</a><br />
Here’s the fascinating story behind one of the most iconic logos.</p>
<p><a href="https://the-brandidentity.com/feed/superior-type-business-type-design-stand-flood-new-fonts/?ref=betterwebtype">Superior Type interview</a><br />
I always enjoy reading the interviews with type designers, it’s a craft that I really admire. Take a look at this one, Vojtěch Říha designed some really good looking typefaces.</p>
<hr />
<p>That’s it, see you next month! 👋</p>Matej Latinhow are things? My newsletter is a bit late this month. We recently got a puppy and a kitten and they’ve been keeping me busy. We’re currently working on introducing them so that they become friends. They both brought a lot of fun back into our lives. I’ll post some photos of them soon!