<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ typography - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ typography - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Wed, 10 Jun 2026 23:16:51 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/typography/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Lorem Ipsum Placeholder Text – Long Latin Filler Text and its History ]]>
                </title>
                <description>
                    <![CDATA[ Here is the full Lorem Ipsum text from 55 BC: Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sun... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/lorem-ipsum-placeholder-text-latin-filler-history/</link>
                <guid isPermaLink="false">66b8d4ba2755c964523f0545</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Sun, 29 May 2022 13:24:56 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/05/Lorem-Ipsum.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Here is the full Lorem Ipsum text from 55 BC:</p>
<pre><code>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. 

Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit amet consectetur adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem. 

Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? 

Quis autem vel eum iure reprehenderit, qui <span class="hljs-keyword">in</span> ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur? 

At vero eos et accusamus et iusto odio dignissimos ducimus, qui blanditiis praesentium voluptatum deleniti atque corrupti, quos dolores et quas molestias excepturi sint, obcaecati cupiditate non provident, similique sunt <span class="hljs-keyword">in</span> culpa, qui officia deserunt mollitia animi, id est laborum et dolorum fuga. 

Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio, cumque nihil impedit, quo minus id, quod maxime placeat, facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. 

Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet, ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
</code></pre><p>This original Lorem Ipsum Latin text is 249 words long (1,740 characters). Note that the famous paragraph from this text is actually this series of words cut out and re-arranged from the above text:</p>
<pre><code>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed <span class="hljs-keyword">do</span> eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor <span class="hljs-keyword">in</span> reprehenderit <span class="hljs-keyword">in</span> voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt <span class="hljs-keyword">in</span> culpa qui officia deserunt mollit anim id est laborum.
</code></pre><p> Most designers will just repeat the text throughout their designs as needed.</p>
<p>There are a lot of Lorem Ipsum text generators online. But they all use this text as their source.</p>
<p>There are also lots of variations of the Lorem Ipsum text out there that have been modified to contain humorous words. Here's a version I'm particularly fond of, Kitty Ipsum:</p>
<pre><code>Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
</code></pre><p>I've even seen versions of Lorem Ipsum where the authors sneak in hyperlinks. (I guess tricking tons of web designers into accidentally linking to your website is a viable SEO strategy.)</p>
<p>Anyway, if you just want to have access to the raw Lorem Ipsum text itself in an easy copy-paste format, this is it. I recommend bookmarking this page. 😉</p>
<h2 id="heading-where-does-lorem-ipsum-text-come-from">Where does Lorem Ipsum text come from?</h2>
<p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC. This makes it more than 2000 years old.</p>
<p>Typesetters started using Lorem Ipsum in the 1500s. Fast forward to today, designers and developers still use this same placeholder text in their web designs.</p>
<p>Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, wanted to find the original source for Lorem Ipsum text. He looked up one of the more obscure Latin words from the passage: "consectetur". This helped him discover the original source.</p>
<p>It turns out Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet" comes from a line in section 1.10.32.</p>
<p>Note that the original text included some typos. (I suppose they didn't have spellcheck back in 45 BC.) Since this is a tradition, and very few people can even read Latin today, I've chosen to use the original version above that includes those typos, rather than one of the corrected versions.</p>
<h2 id="heading-is-lorem-ipsum-copyrighted">Is lorem ipsum copyrighted?</h2>
<p>No. It is public domain (copyright-free) so no one owns the rights to it. You can use Lorem Ipsum text freely.</p>
<h2 id="heading-should-i-use-a-lorem-ipsum-generator">Should I use a Lorem Ipsum Generator?</h2>
<p>I personally don't bother with these. You can just use the original Lorem Ipsum text.</p>
<p>Some design tools may already have Lorem Ipsum text built-in, and you can just use those.</p>
<p>Have fun designing your layout. And if you want to learn some more coding, check out <a target="_blank" href="https://www.freecodecamp.org/learn">freeCodeCamp's core curriculum</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is UTF-8? UTF-8 Character Encoding Tutorial ]]>
                </title>
                <description>
                    <![CDATA[ UTF-8 is a character encoding system. It lets you represent characters as ASCII text, while still allowing for international characters, such as Chinese characters. As of the mid 2020s, UTF-8 is one of the most popular encoding systems. To start usin... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-utf-8-character-encoding/</link>
                <guid isPermaLink="false">66b8d69257c651c38343a990</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Sun, 03 Apr 2022 04:01:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/brett-jordan-M9NVqELEtHU-unsplash--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>UTF-8 is a character encoding system. It lets you represent characters as ASCII text, while still allowing for international characters, such as Chinese characters.</p>
<p>As of the mid 2020s, UTF-8 is one of the most popular encoding systems.</p>
<p>To start using UTF-8, you will want to first familiarize yourself with the the basic ASCII character set.</p>
<h3 id="heading-what-is-the-ascii-character-set">What is the ASCII Character Set?</h3>
<p>ASCII uses 7-bit code points to represent 128 different characters. These code points are divided into 95 printable characters, which include the 26 letters of the English alphabet (A to Z, both upper- and lower-case), the 10 digits (0 through 9), and a variety of punctuation and other symbols.</p>
<p>There are also 33 non-printable characters, which include control characters like carriage return and line feed, as well as various other characters that are used for things like formatting text.</p>
<h3 id="heading-utf-8-vs-ascii-whats-the-difference">UTF-8 VS ASCII – What's the Difference?</h3>
<p>UTF-8 extends the ASCII character set to use 8-bit code points, which allows for up to 256 different characters. </p>
<p>This means that UTF-8 can represent all of the printable ASCII characters, as well as the non-printable characters. </p>
<p>UTF-8 also includes a variety of additional international characters, such as Chinese characters and Arabic characters.</p>
<h2 id="heading-how-to-use-utf-8-in-your-webpages-html-utf-8-example">How to Use UTF-8 in Your Webpages – HTML UTF-8 Example</h2>
<p>And now the easy part. You don't actually need to know how it works (though I'll tell you in a moment.) You can configure UTF-8 Character Encoding in your HTML code with a single line of HTML located in the <code>&lt;head&gt;</code> section of your code:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"utf-8"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>With that out of the way, let me explain how UTF-8 works, and why it's such a brilliant encoding scheme.</p>
<h2 id="heading-how-utf-8-encoding-works-and-how-much-storage-each-character-uses">How UTF-8 Encoding Works, and How Much Storage Each Character Uses</h2>
<p>When representing characters in UTF-8, each code point is represented by a sequence of one or more bytes. The number of bytes used depends on the code point being represented by the character. Here's a breakdown of the usage range:</p>
<ul>
<li>code points in the ASCII range (0-127) are represented by a single byte</li>
<li>code points in the range (128-2047) are represented by two bytes</li>
<li>code points in the range (2048-65535) are represented by three bytes</li>
<li>and code points in the range (65536-1114111) are represented by four bytes. (This may seem like a lot of possible characters, but keep in mind that in Chinese alone, there are 100,000s of characters.)</li>
</ul>
<p>The first byte of a UTF-8 sequence is called the "leader byte". The leader byte provides information about how many bytes are in the sequence, and what the code point value of the character is.</p>
<p>The leader byte for a single-byte sequence is always in the range (0-127). The leader byte for a two-byte sequence is in the range (194-223). The leader byte for a three-byte sequence is in the range (224-239). And the leader byte for a four-byte sequence is in the range (240-247).</p>
<p>The remaining bytes in the sequence are called "trailing bytes." The trailing bytes for a two-byte sequence are in the range (128-191). The trailing bytes for a three-byte sequence are in the range (128-191). And the trailing bytes for a four-byte sequence are in the range (128-191).</p>
<p>You can calculate the code point value of a character by looking at the leader byte and the trailing bytes. For a single-byte sequence, the code point value is equal to the value of the leader byte.</p>
<p>For a two-byte sequence, the code point value is equal to ((leader byte - 194) * 64) + (trailing byte - 128).</p>
<p>For a three-byte sequence, the code point value is equal to ((leader byte - 224) <em> 4096) + ((trailing byte1 - 128) </em> 64) + (trailing byte2 - 128).</p>
<p>For a four-byte sequence, the code point value is equal to ((leader byte - 240) <em> 262144) + ((trailing byte1 - 128) </em> 4096) + ((trailing byte2 - 128) * 64) + (trailing byte3 - 128).</p>
<h2 id="heading-utf-8-is-a-sound-choice-for-encoding">UTF-8 is a Sound Choice for Encoding</h2>
<p>Again, UTF-8 is a super efficient encoding system. It can represent a wide range of characters while still being compatible with ASCII. This makes it a sound choice for use in internationalized software.</p>
<p>I hope you've found this helpful. If you want to learn more about programming and technology, try <a target="_blank" href="https://www.freecodecamp.org/learn">freeCodeCamp's core coding curriculum</a>. It's free.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Typography for Developers – Free 2-Hour Course for Beginners ]]>
                </title>
                <description>
                    <![CDATA[ Typography is one of the most important aspects of good design. It is especially important for web designers. We just published a course on the freeCodeCamp.org YouTube channel that will teach you all you need to know about creating good typography a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-design-good-typography/</link>
                <guid isPermaLink="false">66b2031927569435a9255abc</guid>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Tue, 11 May 2021 12:56:14 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/typography2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Typography is one of the most important aspects of good design. It is especially important for web designers.</p>
<p>We just published a course on the freeCodeCamp.org YouTube channel that will teach you all you need to know about creating good typography as a UX Designer.</p>
<p>Hope Armstrong developed this course.</p>
<p>You will learn how to choose a typeface, what to look for when laying out type, how to create typographic hierarchy, how to layout type, and how to create responsive typography.</p>
<p>First you will get an introduction to typography. This stage will give you the foundation to build upon as you learn more about typography.</p>
<p>Next you will learn how to select, install, and use fonts on your computer and in your designs. You will learn about font weights, styles and sizes as well as the importance of horizontal and vertical spacing to create typographic rhythm and flow.</p>
<p>After learning about fonts, you will learn how to create typographic hierarchy with style, weight, size, positions, capitalization and color, and how to combine different typeface to create variety and interest.</p>
<p>Finally, you will learn about responsive typography, grid systems, variable fonts, and the fine details of type.</p>
<p>Watch the full course below or <a target="_blank" href="https://youtu.be/agbh1wbfJt8">on the freeCodeCamp.org YouTube channel</a> (2-hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/agbh1wbfJt8" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Font Awesome v5.7.2 with HTML ]]>
                </title>
                <description>
                    <![CDATA[ Font Awesome is one of the most popular ways to add icons to your site. But what if you add the CDN to the <head> element of your page and all you see are black rectangles? Here are a couple of things to keep in mind when you add Font ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-font-awesome-v5-7-2-with-html/</link>
                <guid isPermaLink="false">66c355acfd47bc6e657cb86e</guid>
                
                    <category>
                        <![CDATA[ fonts ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ toothbrush ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 02 Jun 2020 02:14:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9aa9740569d1a4ca26f1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Font Awesome is one of the most popular ways to add icons to your site. But what if you add the CDN to the <code>&lt;head&gt;</code> element of your page and all you see are black rectangles?</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/6f22c59bffe7f1b87fed6d58092f69d53e3bbd15.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Here are a couple of things to keep in mind when you add Font Awesome to your next project.</p>
<h3 id="heading-add-the-link-to-the-head">Add the link to the head</h3>
<p>Imagine you have the following HTML:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/css"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"testing.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/css"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"css/all.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1 user-scalable=no"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">i</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"fab fa-github-square"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/willyblackkeez"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"profile-link"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">i</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"fab fa-facebook"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Like other CDNs, you need to add a <code>&lt;link&gt;</code> element to the <code>&lt;head&gt;</code>. For Font Awesome 5.7.2, it'll look something like this: </p>
<p><code>&lt;link rel="stylesheet" href="//use.fontawesome.com/releases/v5.0.7/css/all.css"&gt;</code></p>
<h3 id="heading-online-vs-local">Online vs local</h3>
<p>If you run the following code in a web based editor like CodePen or CodeSandbox, the following code renders icons properly:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"//use.fontawesome.com/releases/v5.0.7/css/all.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/css"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"testing.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/css"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"css/all.css"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1 user-scalable=no"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">i</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"fab fa-github-square"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/willyblackkeez"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"profile-link"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">i</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"fab fa-facebook"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>But if you try to open the page locally in a browser, you'll still see the black rectangles instead of the icons:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/6f22c59bffe7f1b87fed6d58092f69d53e3bbd15-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Take another look at the <code>href</code> in the <code>&lt;link&gt;</code> element above. Do you see it?</p>
<p>The problem is that, when you load the page from your local file system, the browser is trying to find the Font Awesome CSS file at the root of the file system. </p>
<p>To get things working online and locally, make sure to add the URL scheme (HTTP, or better, HTTPS) to the <code>href</code>:</p>
<p><code>&lt;link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.7/css/all.css"&gt;</code></p>
<h3 id="heading-whats-going-on-here">What's going on here?</h3>
<p>When you leave off the URL scheme (<code>href="//use.fontawesome..."</code>), then the browser uses the same URL scheme the page was loaded with.</p>
<p>So if you run the page locally by running the HTML file in a browser, the <code>href</code> assumes the Font Awesome CSS is also a file that is also saved locally (<code>file:</code>).</p>
<p>Just make sure the <code>href</code> attributes for your <code>&lt;link&gt;</code> elements all point to the full URL, including the URL scheme, and you should be good to go.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Typography — Type Families, Classifications, and Combining Typefaces ]]>
                </title>
                <description>
                    <![CDATA[ Type Families Type families are ranges of typeface designs. Each family is a variation of a basic style of alphabet. There are hundreds or maybe even thousands of typeface families. Reference-style: History The concept families of type hadn’t formed... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/typography-type-families-classifications-and-combining-typefaces/</link>
                <guid isPermaLink="false">66c363d140438b5931fe09a4</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ toothbrush ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 01 Feb 2020 00:00:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9d2a740569d1a4ca3645.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <h2 id="heading-type-families"><strong>Type Families</strong></h2>
<p>Type families are ranges of typeface designs. Each family is a variation of a basic style of alphabet. There are hundreds or maybe even thousands of typeface families.</p>
<p>Reference-style:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/Helvetica_Neue_typeface_weights.svg" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-history"><strong>History</strong></h3>
<p>The concept families of type hadn’t formed when typefaces were first invented, and all fonts were roman designs. During the early years of the 16th century, cursive type was introduced. Cursive was also called italic, named after Italy, where the idea was popularized. Romans were one style of type and italics were another, like serif and sans serif, and there were still no typeface families.</p>
<h3 id="heading-punctuation"><strong>Punctuation</strong></h3>
<p>Punctuation gives type emotion, and gives indications on when to stop, slow down, and much more.</p>
<h3 id="heading-there-are-seven-types-of-font-families"><strong>There are seven types of font families</strong></h3>
<ul>
<li>Old Style</li>
<li>Transitional</li>
<li>Modern</li>
<li>Slab Serif</li>
<li>Sans Serif</li>
<li>Decorative</li>
<li>Script-Cursive</li>
</ul>
<h2 id="heading-combining-typefaces"><strong>Combining Typefaces</strong></h2>
<h3 id="heading-font-pairing-basics">Font Pairing Basics</h3>
<p>Which fonts look good together and which ones don’t? If you’ve ever struggled with this question, you’re not alone. Learn how to pair different fonts and styles by getting familiar with these clever combos!</p>
<h3 id="heading-try-these-steps-one-by-one">Try these steps one by one</h3>
<ul>
<li>Pair a regular and bold font to create a subtle contrast</li>
<li>Balance a script font with a bold font</li>
<li>Pair a tall and short font to create visual interest</li>
<li>Pair fonts with different weights to create a strong contrast</li>
<li>Pair a regular and italic font to create emphasis</li>
</ul>
<p>There are no hard and fast rules for choosing typefaces, but you can often avoid having to choose new typefaces by styling an existing typeface to create a visual hierarchy. When in doubt, keep it simple.</p>
<p>Designers follow different philosophies to determine when and how to combine typefaces.</p>
<h3 id="heading-anchor-or-role-typeface"><strong>Anchor or Role Typeface</strong></h3>
<p>If your project involves large amounts of text, choose an anchor typeface for the body text. This anchor typeface will guide the rest of your design choices as you make continuous tests and refinements for different combinations of typefaces against your anchor.</p>
<h3 id="heading-contrasting-typefaces"><strong>Contrasting Typefaces</strong></h3>
<p>For text-light projects, having clear hierarchical roles for a font is not as great a concern as visual impact. Pair contrasting typefaces such as serif plus sans-serif. Designers often share their favorite typeface pairs, so search and experiment until you create a pleasing result.</p>
<h3 id="heading-typeface-families"><strong>Typeface Families</strong></h3>
<p>Many type foundries create typefaces with extensive extra features like multiple weights and cases, decorative glyphs, serif and sans-serif versions, etc. You can use a single type family like this to ensure consistent design while creatively using those extra features to provide extra emphasis or decoration that might otherwise require another typeface. Typeface families are often a great compromise of visual consistency and typographic flexibility.</p>
<h2 id="heading-type-classifications"><strong>Type Classifications</strong></h2>
<p>Almost all typefaces fall into one group or another. This system of classifying typefaces developed in the nineteenth century. Each typeface has it’s own visual structure, influences, intent and historical significance.</p>
<p>The basic classification of typefaces is as follows:</p>
<ul>
<li><strong>Serifs</strong>: These typefaces have small extensions, which embellish the basic structure of a typeface. Serif typefaces have existed since the beginning of type. They are visible in Old style and Humanist type serifs like Garamond. Baskerville, another serif typeface belongs to the transitional era. Bodoni and Rockwell are part of Modern and Slab serif(Egyptian) styled typefaces.</li>
<li><strong>Sans-serif</strong> : Sans means without. These typefaces are devoid of those small extensions, hence without serif. Examples include Gill sans which has Humanist connotations, Helvetica with it’s transitional characteristics and so on.</li>
<li><strong>Script</strong>: Letter forms developed in close relation to human handwriting are script typefaces. They are flexible in nature with varying stroke widths. Example : Bistro Script, Shelly, Minstral etc.</li>
<li><strong>Blackletter</strong> : A bold script style of calligraphy used heavily during the renaissance. Example: Fraktur</li>
<li><strong>Decorative</strong>: Typefaces which do not fit in other categories are decorative in nature. Built for specific use cases which largely consist of headlines, posters etc.</li>
</ul>
<p>In addition, three main groups to classify type corresponding to different time periods in art and literature are as follows:</p>
<ul>
<li><strong>Humanist</strong> letter forms belong to the renaissance period of around 15th &amp; 16th century. They closely mimic calligraphy and human hand movement. Old serifs followed humanist letter forms. Examples of humanist type are : Sabon, Centaur, Adobd Jenson, Gill Sans etc.</li>
<li><strong>Transitional</strong> letter forms are part of the baroque era. They represent a transition from old style humanist typefaces to modern typefaces. Examples are : Baskerville, Times Roman, Helvetica etc.</li>
<li><strong>Modern</strong> letter forms, are part of the enlightenment period of around 18th-19th century. They depict a radical shift from traditional typography to a more abstract design. Examples are : Bodoni, Futura etc.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/Thinking_with_Type_Letter_12.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Source: <a target="_blank" href="http://thinkingwithtype.com/">Thinking with Type</a> by Ellen Lupton</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ultimate Guide to Typography: Point Size, Upper vs Lower Case, Em and En Dashes, and More ]]>
                </title>
                <description>
                    <![CDATA[ Typography is a field that deals with the written word and how letters and characters are presented. The same letters can be styled in different ways to convey different emotions. And there are all kinds of tradeoffs around style versus readability. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/typography-in-detail-point-size-em/</link>
                <guid isPermaLink="false">66c363ceef766eb77cd7880b</guid>
                
                    <category>
                        <![CDATA[ toothbrush ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 29 Jan 2020 23:14:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9d4a740569d1a4ca36f3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Typography is a field that deals with the written word and how letters and characters are presented.</p>
<p>The same letters can be styled in different ways to convey different emotions. And there are all kinds of tradeoffs around style versus readability.</p>
<p>In this article, we’ll look at some of the smaller - but still important - details related to typography like point size, upper vs lower case letters, em vs en dashes, kerning, and more.</p>
<h2 id="heading-point-size"><strong>Point Size</strong></h2>
<p>The point size is a way to introduce standardization to typography. The point size is the smallest unit of measurement.</p>
<p>In metal type, point size refers to the height of the metal body on which a typeface’s character is cast. In digital typefaces, the metal body is replaced by an invisible box known as the <em>em square</em>. Each character fits inside that em square or em box. The <strong>em size of a font is equal to its point size.</strong></p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span>{
  <span class="hljs-attribute">font-size</span>:<span class="hljs-number">16px</span>;
}

<span class="hljs-selector-tag">body</span>{
  <span class="hljs-attribute">font-size</span>:<span class="hljs-number">1em</span>;  // 1em is equal to 16px
}
</code></pre>
<p>The point size is also used to measure leading (line-height), line length and other elements, apart from font size.</p>
<p>In digital typefaces, <strong>one point is equal to 1/72 of an inch</strong>. Twelve points make one pica. Six picas make one inch. A common way of representing picas and points is as follows:</p>
<ul>
<li>1 pica = 1p</li>
<li>1 point = 1 pts or p1</li>
<li>6 picas and 3 points = 6p3</li>
<li>7-point Open Sans with 9 points of leading = 7/9 Open Sans</li>
</ul>
<p>The optimal point size for print is usually between 10-12 points while that for web, the optimal point size is between 15-25 points. </p>
<p>In CSS, you should set font-size in ems or rems than pixels as the former are scalable in nature. Recently, there has been much talk about fluid typography using the newly introduced units vw and vh. </p>
<p>Learn more about it here : <a target="_blank" href="https://www.smashingmagazine.com/2016/05/fluid-typography/">Fluid Typography</a></p>
<p>Remember, different fonts set at the same point size will not appear to be of the same size due to their individual characteristics, namely—x-height, stroke modulation or contrast and character-width.</p>
<h2 id="heading-upper-and-lower-case"><strong>Upper and Lower Case</strong></h2>
<p>Uppercase (UC) is alternatively referred to as caps and capital. It is a typeface of larger characters. Lowercase (LC) is a typeface of small characters. As long as the shift key is not being pressed and the Caps lock is not active, everything typed is in lowercase. The Uppercase and Lowercase is often synonymous with Majuscule and Minuscule.</p>
<p>Many languages have two different written representations of their letters, <strong>upper case</strong> and <strong>lower case</strong>, also known as majuscule and minuscule forms.</p>
<p>Upper case and lower case letters are often mixed in the same piece of text. The use of cases is decided by grammar, but a variety of <a target="_blank" href="https://en.wikipedia.org/wiki/Letter_case#Case_styles">case styles</a> also exists. Certain case styles are common in computer programming, referred to as <a target="_blank" href="https://guide.freecodecamp.org/javascript/naming-convention-for-javascript">naming conventions</a>, like CamelCase and snake_case.</p>
<h2 id="heading-uppercase"><strong>Uppercase:</strong></h2>
<p>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z</p>
<h2 id="heading-lowercase"><strong>Lowercase:</strong></h2>
<p>a b c d e f g h i j k l m n o p q r s t u v w x y z</p>
<p>Capitalization is important for the following reasons:</p>
<ul>
<li>Passwords: passwords are case sensitive, so capitalization add an extra level of security.</li>
<li>Measurements: When dealing with computer measurement, and other measurements, capitalization is important for identifying the exact type of measurement. For example, “Mb” (short for Megabit) and “MB” (short for Megabyte) are two different types of measurements with different values.</li>
<li>Commands</li>
<li>File names, directories and paths.</li>
</ul>
<h2 id="heading-ems-and-ens"><strong>Ems and Ens</strong></h2>
<p>Ems and Ens are a form of the punctuation mark called ‘dash’. Although similar in appearance to a hyphen, they serve different purposes.</p>
<h3 id="heading-em-dash"><strong>Em Dash</strong></h3>
<p>Use an Em dash to denote a break in the sentence. Substitute it for a comma or to denote a pause in a sentence. They are also used to attribute a quote to a speaker. An Em dash is one em wide—the width of a point size of a typeface. Don’t put any spaces before and after an em dash.<br>For example: The noise from the neighbor’s house—it’s killing me.</p>
<ul>
<li>Command for an Em dash on a mac : Shift-Option-Hyphen</li>
<li>Command for an Em dash on Microsoft Word : Alt + Ctrl + (minus)</li>
<li>Em dash in HTML : <code>&amp;mdash;</code> or <code>&amp;#8212;</code></li>
</ul>
<h3 id="heading-en-dash"><strong>En Dash</strong></h3>
<p>Use an En dash as a replacement for the word ‘to’ or to denote a range of numbers. An En dash is half the width of an Em dash. Don’t put any spaces before and after an en dash.<br>For example: The first world war lasted from 1914–1918.</p>
<ul>
<li>Command for an En dash on a mac : Option-Hyphen</li>
<li>Command for an En dash on Microsoft Word : Ctrl + (minus)</li>
<li>En dash in HTML : <code>&amp;ndash;</code> or <code>&amp;#8211;</code></li>
</ul>
<h2 id="heading-kerning-and-tracking"><strong>Kerning and Tracking</strong></h2>
<p>Kerning refers to the spacing between two individual characters within a word.</p>
<p>Tracking refers to the spacing between words.</p>
<p>Some typefaces are not designed to be kerned or tracked too loosely and vice versa. If one kerns or tracks too tightly or too loosely, they risk sacrificing readability and legibility.</p>
<p>When deciding how tight or loose to kern or track your text, it is advisable to first consider the scale at which the text will be interacted with. If it is to be printed, how far away from the printed text will the viewer be? Will they be driving by? Will it be on read on a backlit screen?</p>
<p>One should also consider the positive and negative ground when tracking and kerning. Tracking too tightly or too loosely can result in awkward figure/ground relations that will distract the user.</p>
<h2 id="heading-legibility-and-readability">Legibility and Readability</h2>
<h3 id="heading-legibility"><strong>Legibility</strong></h3>
<p><strong>Legibility</strong> means being able to differentiate different characters in a text. Legible text implies it can be easily interpreted. Look at the unique characteristics of a typeface when considering legibility. Some of the considerations are as follows:</p>
<ul>
<li>You should use each typeface according to it’s <em>context and intended usage</em>. Look into it’s history and it’s best use case scenarios. For example : Garamond is best used for large bodies of text on print whereas Georgia for screen.</li>
<li>Keep in mind whether the typeface is for <em>display text or body text</em>.</li>
<li>The x-height of a typeface is the size of the lowercase ‘x’ in a typeface. A typeface with <em>medium to high x-height</em> results in a text legible at even small sizes.</li>
<li>Conventionally, <strong>serif</strong> typefaces are more legible for body text than their sans-serif counterparts.</li>
</ul>
<h3 id="heading-readability"><strong>Readability</strong></h3>
<p><strong>Readability</strong> means arranging group of words or a blocks of text in such a way to make the text more accessible. The idea is to reduce the amount of effort required to read a body of text.</p>
<p>Stephen Coles remarks that readability, not only begs the question of “Can you read it?” but whether <strong>” do you want to read it?”</strong>.</p>
<p>Jason Santa Maria points out in his book <em>On Web Typography</em> that reading is not a linear activity. We read in a back and forth motion called <strong>saccades</strong>, which is our eyes hopping from one point to another. Also, text with familiar words makes it easier for us to read. Some basic points to remember when considering readability are as follows:</p>
<ul>
<li><strong>Contrast</strong> refers to the change in thickness of the stroke in different parts of the letter. Higher the contrast, higher the change in stroke. Use medium to low contrast typefaces for long bodies of text.</li>
<li><strong>Line Height</strong> refers to the distance between two lines of text. You do not want to make the block of text neither too tight nor too loose. You can control line height in CSS by the property ‘line-height’. For most texts, you can set it between 1.2 to 1.5 (without any units).</li>
<li><strong>Line length</strong> (measure) refers to the average number of characters in a line of text. A large line length hampers readability by making it difficult for our eyes to scan the text. Usually about 45-75 characters per line is optimal for a body of text. If you plan on increase the line length beyond that, then also take care to increase the line height so that there is enough space between two lines of text. In CSS, you can set the width of the container, and by using the em unit, you can get close to a set number of characters, depending on the width-to-height ratio of the font. Example: width: 35em;</li>
<li><strong>Tracking</strong> refers to adjusting the space between characters in a text. Adding tracking means adding white space between characters and vice versa. At small font sizes i.e. less than 10pts, adding tracking helps in improving readability. Similarly, for large headings, use negative tracking to bring the letters closer. You can control tracking in CSS via ‘letter-spacing’ property. For example : letter-spacing: 0.05em;</li>
<li><strong>Font size</strong> refers to the size of the font used in a text. For mobile display, use sizes of at least 12px. You can control font-size in CSS via ‘font-size’ property. Example: font-size: 48px;</li>
</ul>
<p>As you can see, you need to take into account a lot of factors to ensure optimal legibility and readability. Remember, there are no hard and fast rules for any of the above described factors. They are mere guidelines which might help you to train your typographic eye better.</p>
<h2 id="heading-color-and-tonal-value"><strong>Color and Tonal Value</strong></h2>
<p>In color theory, a tonal value is produced by adding white, grey, or black to a selected color. This does not change the hue but does alter the colorfullness, also known as saturation. When discussing tonal value, there are three main terms that must be discussed: Tint, Tone, and Shade.</p>
<p>Tint is the addition of white to a color. Tint can be used to highlight an area as well as begin to create the illusion of depth on an object.</p>
<p>Tone is the addition of grey to a color. The tonal color creates a more muted and less saturated color.</p>
<p>Shade is the addition of black to a color. Shade can be used to darken and area to create the illusion of depth on an object.</p>
<p>By altering a colors tonal value, you can create the illusion of depth in images as well as alter the saturation level to better apply color for a desired emotion or mood.</p>
<h2 id="heading-more-on-typography">More on Typography:</h2>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/typography-anatomy-of-letterforms/">Typography: anatomy of letterforms</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/8-point-grid-typography-on-the-web-be5dc97db6bc/">8-point grid: typography on the web</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/typography-can-make-your-design-or-break-it-7be710aadcfe/">Why typography can make or break your design</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Typography - Anatomy of Letterforms ]]>
                </title>
                <description>
                    <![CDATA[ The anatomy of letterforms describes the different elements that make up printed letters in a typeface. The figure below shows the different parts of the letters in a typeface: _Source: https://en.wikipedia.org/wiki/Typeface_anatomy_ According to "T... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/typography-anatomy-of-letterforms/</link>
                <guid isPermaLink="false">66c363ccef766eb77cd78809</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 05 Jan 2020 21:52:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9e29740569d1a4ca3baf.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The anatomy of letterforms describes the different elements that make up printed letters in a typeface. The figure below shows the different parts of the letters in a typeface:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/02/Typographia.svg" alt="Image" width="600" height="400" loading="lazy">
_Source: <a target="_blank" href="https://en.wikipedia.org/wiki/Typeface_anatomy">https://en.wikipedia.org/wiki/Typeface_anatomy</a>_</p>
<p>According to <a target="_blank" href="https://en.wikipedia.org/wiki/Typeface_anatomy">"Typeface anatomy"</a>, the typographic parts of a glyph are as follows:</p>
<blockquote>
<p>1) x-height; 2) ascender line; 3) apex; 4) baseline; 5) ascender; 6) crossbar; 7) stem; 8) serif; 9) leg; 10) bowl; 11) counter; 12) collar; 13) loop; 14) ear; 15) tie; 16) horizontal bar; 17) arm; 18) vertical bar; 19) cap height; 20) descender line</p>
</blockquote>
<p>Generally speaking, a typeface consists of 3 main parts:</p>
<ol>
<li>Strokes</li>
<li>Terminals</li>
<li>Space</li>
</ol>
<h3 id="heading-strokes">Strokes</h3>
<p>Stroke refers to the main body of the letterform. They may be straight, as in letters like <em>l</em>, <em>z</em>, <em>k</em>, <em>v</em> or curved like in <em>c</em> or <em>o</em>. The different parts of the stroke are given below:</p>
<ul>
<li>The imaginary line on which most characters sit is known as the <strong>b</strong>aseline<em>**</em> (4).</li>
<li><strong>Baseline (4):</strong> The imaginary line that most characters are situated on </li>
<li><strong>Capline (19):</strong> Another imaginary line that dictates the height of all uppercase characters. This is sometimes called the <strong>capheight</strong></li>
<li><strong>Meanline:</strong> The imaginary line that marks the top of lowercase letters</li>
<li><strong>X-height (1):</strong> The height of the lowercase <em>x</em> character, and represents the distance between the baseline and the meanline.</li>
<li><strong>Stem (7):</strong> The main stroke in a letterform, which is often vertical or diagonal</li>
<li><strong>Crossbar (6):</strong> These are the strokes that connect two separate lines in capital letters such as <em>A</em> and <em>H</em>, or the horizontal stroke in the lowercase <em>t</em></li>
<li><strong>Ascender (5):</strong> When the stroke of a lowercase letter goes above the meanline such as with <em>l</em></li>
<li><strong>A</strong>scender line<strong>** </strong>(2):** The imaginary line depicting the distance between the baseline and the top of the ascender</li>
<li><strong>Descender:</strong> When the stroke of a lowercase letter falls below the baseline like with <em>g</em></li>
<li><strong>D</strong>escender line<strong>** </strong>(20):** The imaginary line depicting the distance between the baseline and the bottom of the descender</li>
<li><strong>Shoulder:</strong> Sometimes called an <strong>arch</strong>, this is a curved, arching stroke like the one at the top of <em>R</em>, and also found in <em>h</em>, <em>n</em>, and <em>m</em></li>
<li><strong>Bowl (10):</strong> A curved, closed stroke like the ones in <em>d</em>, <em>b</em>, <em>R,</em> <em>D</em>, and <em>B</em></li>
<li><strong>Leg (9):</strong> The downward diagonal stroke as in <em>K</em> and <em>R</em></li>
<li><strong>Bar:</strong> The short, horizontal stroke in letters that do not cross a vertical line like the center of <em>e</em>, and the middle stroke of both <em>E</em> and <em>F</em></li>
<li><strong>Arm (17):</strong> The long horizontal stroke at the top or bottom of a character like in <em>E</em> and <em>F</em></li>
<li><strong>Tittle:</strong> The dot above characters like the one in <em>i</em> or <em>j</em>. This is sometimes called a <strong>dot</strong> or <strong>jot</strong></li>
<li><strong>Loop (13):</strong> The open or closed bottom section of a double-story <em>g</em> in some typefaces</li>
</ul>
<h3 id="heading-terminals">Terminals</h3>
<p>Terminals are the end of the strokes and can be either <strong>s</strong>erif<strong>** or </strong>sa<strong>ns-</strong>s<strong>erif**</strong>.</p>
<p>A seriffed terminal has protrusions on the edges which can be described as a wedge, bulbous, teardrop, or slab. On the other hand, sans-serif terminals do not have any of those features at the end of strokes.</p>
<p>These days, sans-serif is used on digital displays since they have better legibility, especially on lower resolution displays where serif terminals are hard to depict.</p>
<h3 id="heading-space">Space</h3>
<p>Space refers to the white space that is found between the letters and also inside letters like <em>o</em> and <em>p</em> with closed loops.</p>
<p>Below are some basic definitions to help you understand how type is described and measured.</p>
<h2 id="heading-describing-and-measuring-type">Describing and measuring type</h2>
<h3 id="heading-typeface-vs-font">Typeface vs. font</h3>
<p>Often these terms can be used interchangeably. But in the case of typography, there is a difference, however slight.</p>
<p>Typeface is a set of glyphs or characters – which include letters, numbers, and punctuation – that share a distinct sense of style. Common examples are Arial, Times New Roman, and Roboto.</p>
<p>Font is a small, specific subset of a typeface, and describes how the typeface is presented. For example, bold Roboto 8pt is one example of a font, while italicized Roboto 12pt is another distinct font.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/02/typography-terms-infographic-tb-800x0.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Source: <a target="_blank" href="https://www.canva.com/learn/typography-terms/">https://www.canva.com/learn/typography-terms/</a></em></p>
<h3 id="heading-type-families">Type families</h3>
<p>Different options for a given typeface, most of which include bold, italic, and roman at a bare minimum. Other examples of type families include condensed bold, condensed black, ultralight, light, regular,  ultralight italic, light italic, regular italic, and so on.</p>
<h3 id="heading-point-sizes">Point Sizes</h3>
<p>The point is used to measure the size of a font. One point is equal to 1/72 of an inch. When a character is referred to as 12pt, the full height of the text block (such as a block of movable type), and not just the character itself, is being described. Because of this, two typefaces at the same point size may appear as different sizes, based on the position of the character in the block and how much of the block the character fills.</p>
<h3 id="heading-pica">Pica</h3>
<p>How lines of text are measured generally. One pica equals 12 points, and six picas equal one inch on a page or screen.</p>
<h3 id="heading-tracking-letter-spacing-and-kerning">Tracking / Letter-spacing and kerning</h3>
<p>These elements control the distance between characters and can be used to adjust legibility.</p>
<p>Tracking, or letter-spacing, is the space between characters across an entire block of block of text such as a magazine article.</p>
<p>Kerning is the space between individual characters. If you've ever typed a word in an editor and thought it looked off – the letters being either too close together or too far apart – it was probably a kerning issue.</p>
<h3 id="heading-leading">Leading</h3>
<p>This refers to the vertical distance between lines of text, and is measured from one baseline to the next.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 8-Point Grid: Typography On The Web ]]>
                </title>
                <description>
                    <![CDATA[ By Elliot Dahl Web typography is confusing. Do you know the best practices? When I started looking around at popular websites to figure out the best practices for web typography, I must admit I was baffled. Below are some examples of typography scale... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/8-point-grid-typography-on-the-web-be5dc97db6bc/</link>
                <guid isPermaLink="false">66d45e3cb6b7f664236cbdbc</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design Systems ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 13 Jun 2018 16:22:43 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*a9-nNNgjaAsA8ImC-JF4NA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Elliot Dahl</p>
<h2 id="heading-web-typography-is-confusing-do-you-know-the-best-practices">Web typography is confusing. Do you know the best practices?</h2>
<p>When I started looking around at popular websites to figure out the best practices for web typography, I must admit I was baffled. Below are some examples of typography scales I pulled from a few popular websites and design systems. Can you find the unifying pattern?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/p7a5EwZKGq5FrIg-oXZ58WptVdYXB372hY97" alt="Image" width="700" height="382" loading="lazy">
<em>Samples simplified to fit onto a standard scale</em></p>
<p>Clearly there are different approaches to type systems. The reality is that as a web community we don’t all agree. However, like most design problems, it really starts by addressing the user’s needs.</p>
<h2 id="heading-the-three-archetypes-of-typography-systems">The three archetypes of typography systems</h2>
<p>Here are three general typography system archetypes. Most companies will utilize all three of these at some point but it’s important to recognize the underlying user needs being addressed by each orientation.</p>
<h4 id="heading-marketing-site">Marketing site</h4>
<ul>
<li><strong>Purpose:</strong> Built to tell a specific story and inspire visitors to spend their time and/or money on the site.</li>
<li><strong>Requirements:</strong> Each typeface will need its own set of styles and the variety of sizes will be based on art direction more than element fitting.</li>
<li><strong>Responsive use case:</strong> The system will need to flex through multiple sizes from mobile up to desktop.</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/q4CC1WIXgGD1tXirl1L3tpkh7SOKKDgKPdT4" alt="Image" width="320" height="360" loading="lazy"></p>
<p>Web experiences geared to pitch you something end up in this category. The ambitious ones break all the rules of typography to create compelling and captivating experiences.</p>
<p>While a lot of thought goes into these sites, the focus is on making a splash rather than an extensible system that can be built upon in the future. These sites generally have a short shelf life and are discarded entirely for a top-to-bottom redesign.</p>
<p>An advanced example of this is the interpolation function used by <a target="_blank" href="https://twitter.com/lat">Leigh Taylor</a> and <a target="_blank" href="https://twitter.com/narrowd">Nick Jones</a> on <a target="_blank" href="https://www.invisionapp.com/">Invision’s landing page</a>.</p>
<p>The <code>&lt;</code>h1&gt; <code>has a font-size: calc(32px + ((24 * (100vw — 800px))/</code>799));. The typography on the page is meticulously calculated to work at every screen size.</p>
<blockquote>
<p>“Using math to do dynamic art direction” — <a target="_blank" href="https://twitter.com/lat">Leigh Taylor</a></p>
</blockquote>
<h4 id="heading-bloginfo-site">Blog/Info site</h4>
<ul>
<li><strong>Purpose:</strong> To convey a large amount of text-based information.</li>
<li><strong>Requirements:</strong> The main reading area may utilize a ratio based line-height system, just like this Medium article does.</li>
<li><strong>Responsive use case:</strong> Will likely be responsive but maintaining focus on readability.</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/JWKQZX2pnsELv6JkIOGshLQ3imrMOaRYEkTk" alt="Image" width="320" height="360" loading="lazy"></p>
<p>This Medium article is an example of a web experience built for long-form reading.</p>
<p>The focus is not about interpreting little visualizations or filling out forms. The size ratios they’ve chosen are specifically built for readability constrained to get the desired line-length. I can comfortably read each line because the typography has been carefully crafted to fit my needs as a reader.</p>
<h4 id="heading-product">Product</h4>
<ul>
<li><strong>Purpose:</strong> Built to solve a user problem like filing taxes, managing a git repo, or visualizing performance metrics.</li>
<li><strong>Requirements:</strong> Text must fit nicely into the element hierarchy. Text is mostly utilized for labels, instructions, and displayed data.</li>
<li><strong>Responsive use case:</strong> Minimally responsive. Highly developed products will be utilizing adaptive design meaning different experiences for mobile and desktop. The focus is on the hierarchy of elements that support the user experience.</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/AFvMJ3ln64feUAj9J5VvI-qsRE9hgmpSSff0" alt="Image" width="320" height="360" loading="lazy"></p>
<p>Google’s Material Design is a popular design language that is applicable to many product use cases.</p>
<p>Material’s <a target="_blank" href="https://material.io/design/layout/spacing-methods.html#baseline">spacing method</a> is based on an 8pt component grid system and a 4pt baseline grid for typography. They try to scale line-heights with increments of 4. Scaling by increments of 8 with your baseline grid can be difficult because the available line-heights are too far apart for some text sizes.</p>
<p>Allowing some of the font-sizes to be accompanied with a more appropriate line-height is a great path forward. You can always bump the spacing above or below a given line by 4px to make it align with the greater atomic grid.</p>
<p>When applied, the baseline grid system has the ability to align the element spatial system (8pt grid) with the typography system to create a compelling vertical rhythm in the design.</p>
<h2 id="heading-implementation-of-web-typography-in-reality">Implementation of web typography — in reality</h2>
<p>It is possible to have an opinionated and structured UI adhering to an 8pt grid that also has a long-form reading area.</p>
<p>Allow the fixed baseline grid system to handle the text inside of your structured components and use a modular scale to create an optimal reading experience for the blog or docs you’ve added onto your site.</p>
<p>Most digital product companies do this already between their marketing landing page, the digital product, and their documentation. Making the decision to structure these typographic realms separately can free you from an unsustainable complexity.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/AQRwQogPt9TiBR82ig3AbFMJBPZO8wz-KQG2" alt="Image" width="320" height="360" loading="lazy">
<em>Mixing content types together</em></p>
<h2 id="heading-the-pitfall-ems-rems-and-pixels-oh-my">The pitfall — Ems, rems, and pixels oh my!</h2>
<p>To express a clear and consistent system, typography measurements need to be easily interpreted by the product team building it.</p>
<p>Relative units like <a target="_blank" href="https://css-tricks.com/rem-global-em-local/">rems and ems</a> are sometimes misunderstood and, in my experience, this leads to an unsustainable typography system. For example, the ratio between 14px font-size and a 20px line-height shouldn’t be captured in relative units because that ratio should change as the font-size increases.</p>
<p>Defining a line-height of 1.4285714286em is ridiculous, because most folks can’t do that kind of math in their head. If the font-size increases to 16px the browser will render a line-height of 22.857142px and that kind of pixel splitting is a headache waiting to happen. This creates confusion and is a misuse of relative units. See a complete list of <a target="_blank" href="https://www.w3schools.com/cssref/css_units.asp">absolute vs relative units here</a>.</p>
<p>Why are so many design systems based on relative sizing today? The answer is “accessibility”.</p>
<p>However, browsers don’t scale the base font-size when you zoom in with <code>command +</code>. There are accessibility tools that will scale base font-sizes for users who need it. I recommend properly testing it to make sure it’s the experience you want users to have. Check-the-box accessibility can hurt more than it helps.</p>
<p>Utilizing rems and ems in your site/app is amazingly powerful. There are many very interesting use cases and they should be an important part of your toolkit.</p>
<p>My suggestion is to use them sparingly until you have a solid use for them. Baking them into the core of your typography system can open you up to confusion and unexpected user experiences.</p>
<h2 id="heading-8pt-grid-typography">8pt Grid Typography</h2>
<p>The most powerful part of the 8pt grid concept is its ability to drive consistency throughout your designs. You will need to assess the needs of your users and the best way to scale your typography to meet those needs.</p>
<p>I highly encourage design and engineering to collaborate on finalizing these standards for a company/product.</p>
<p>Here are samples from a few familiar names: <a target="_blank" href="https://material.io/design/typography/the-type-system.html#type-scale">Google Material</a>, <a target="_blank" href="https://styleguide.pivotal.io/typography">Pivotal</a>, <a target="_blank" href="https://atlassian.design/server/foundations/typography/">Atlassian</a>, <a target="_blank" href="https://designsystem.quickbooks.com/foundations/typography/">Intuit</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/F8E-aK4T2KYa7HSEcgDUrq5ahyP9mvJv-M7e" alt="Image" width="700" height="382" loading="lazy">
<em>Samples simplified to fit onto a standard scale</em></p>
<h4 id="heading-references-and-related-reading">References and Related Reading</h4>
<ul>
<li>Priyanka Godbole: <a target="_blank" href="https://blog.prototypr.io/a-framework-for-creating-a-predictable-and-harmonious-spacing-system-8eee8aaf773c">A framework for creating a predictable &amp; harmonious spacing system for faster design-dev handoff</a></li>
<li>Richard Rutter: <a target="_blank" href="http://webtypography.net/intro/">The Elements of Typographic Style Applied to the Web</a></li>
<li>Ian Yates: <a target="_blank" href="https://webdesign.tutsplus.com/articles/how-to-establish-a-modular-typographic-scale--webdesign-14927">How to Establish a Modular Typographic Scale</a></li>
<li>Nathan Curtis: <a target="_blank" href="https://medium.com/eightshapes-llc/space-in-design-systems-188bcbae0d62">Space in Design Systems</a></li>
<li>Vincent De Oliveira: <a target="_blank" href="https://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align">Deep dive CSS: font metrics, line-height and vertical-align</a></li>
<li>Kezz Bracey: <a target="_blank" href="https://webdesign.tutsplus.com/tutorials/why-you-should-be-using-rem-based-layouts--cms-27828">Why You Should Be Using Rem-Based Layouts</a></li>
</ul>
<h4 id="heading-previous-8-point-grid-articles">Previous 8-Point Grid Articles:</h4>
<ol>
<li><a target="_blank" href="https://builttoadapt.io/intro-to-the-8-point-grid-system-d2573cde8632">Intro to The 8-Point Grid System</a></li>
<li><a target="_blank" href="https://builttoadapt.io/8-point-grid-borders-and-layouts-e91eb97f5091">8-Point Grid: Borders and Layouts</a></li>
<li><a target="_blank" href="https://builttoadapt.io/8-point-grid-vertical-rhythm-90d05ad95032">8-Point Grid: Vertical Rhythm</a></li>
</ol>
<h4 id="heading-questions">Questions:</h4>
<p>This is something I am still exploring. Do you have a good example to share? Do you have a different approach to an 8pt typography system?</p>
<p>If you’ve got thoughts, please leave a comment or reach out on <a target="_blank" href="https://twitter.com/Elliotdahl">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Low-hanging design fruit: why you should use Google Font Superfamilies ]]>
                </title>
                <description>
                    <![CDATA[ By Zach Smith Here’s everything you need to know about font superfamilies to make your next design project shine. What is a font superfamily? Are we talking about the Jacksons? The Kardashians? The Brady Bunch? Steve Martin’s fictional family in Chea... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/low-hanging-design-fruit-why-you-should-use-google-font-superfamilies-1dae04b2fc50/</link>
                <guid isPermaLink="false">66c35ab8af2b7c40e7d7eb0f</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Google ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 30 Mar 2018 02:39:02 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*1frBy9sbeA9nWI65jJDdbA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Zach Smith</p>
<p>Here’s everything you need to know about font superfamilies to make your next design project shine.</p>
<h4 id="heading-what-is-a-font-superfamily">What is a font superfamily?</h4>
<p>Are we talking about the Jacksons? The Kardashians? The Brady Bunch? Steve Martin’s fictional family in Cheaper by the Dozen? Or could we be talking about something more closely related to fonts?</p>
<p><strong>Answer:</strong> WE TALKIN’ ‘BOUT FONTS, Y’ALL ⚡</p>
<p>A font superfamily is set of typefaces (example: merriweather and merriweather sans) that have been specifically designed to look good together. Like a musician who plays separate notes simultaneously to create one melodious chord, type designers create font families that stand out individually, but also gloriously combine to offer versatility in style and weight that makes the content on the page more visually appealing and easier to read.</p>
<p>Think of it this way: a superfamily has one mannequin (underlying skeleton form) that can be dressed in many different sets of clothing (serif, width, weight, size, italic). The result: pre-packaged, visually cohesive fonts that are begging to be used together for your next design project. In other words, superfamilies are big, juicy apples waiting to be picked.</p>
<h4 id="heading-where-did-they-come-from">Where did they come from?</h4>
<p>The earliest evidence of superfamilies come from Roman documents all the way back in 79 AD. These Roman documents contained variations in the size of text to create a visual hierarchy. The Romans were making their title text bigger than their body text before it was cool.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/FAkMJrYz1NkuruANaN2FF4xzQMDroRWcO3Jk" alt="Image" width="800" height="537" loading="lazy">
_Photo by [Unsplash](https://unsplash.com/photos/kaEhf0eZme8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="_blank" title=""&gt;Nils on &lt;a href="https://unsplash.com/search/photos/roman-document?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" rel="noopener" target="<em>blank" title=")</em></p>
<p>Fast forward to the 1800’s, and there are typefaces being designed to be compatible across different written languages such as Latin, Greek, and Cyrillic. These were the some of the earliest prototypes of the superfamilies we know and love today.</p>
<p>By the 1900’s, there was an explosion of the variety of sans-serif typefaces, thus expanding the possibilities for variations across all superfamilies. During the years leading up to WWII (yes I just dropped a WWII reference in an article about typography ?), world-renowned Dutch type designer Jan van Krimpen designed the first comprehensive set of typefaces with inherent compatibility, a project called R<em>omulus.</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/qlVlhZT9oSYA5ESJfH9Cyxt6Vyz4p9eR6CJD" alt="Image" width="650" height="495" loading="lazy"></p>
<p><a target="_blank" href="https://www.meermanno.nl/romulus-designs-by-jan-van-krimpen/">In his own words</a>, he set out “to create a complete type family, consisting of, to begin with, roman, sloped roman, semi-bold and semi-bold condensed, at least four weights of sans serif, a script type and a set of Greek characters.”</p>
<p>This was the most ambitious type design project to date, and while he didn’t complete it following the war, it was the beginning of what is now commonplace in type design: the superfamily.</p>
<p>YAWN. Okay, let’s get to the good stuff.</p>
<h3 id="heading-here-are-10-google-font-superfamilies-you-should-know-about">Here are 10 Google Font superfamilies you should know about</h3>
<p>We’ve discussed what they are, where they come from, and why you should use them. Now let’s see some real-life superfamilies in action. Here are some great pairs from <a target="_blank" href="https://fonts.google.com">Google Fonts</a> superfamilies to use for your next design project!</p>
<h4 id="heading-1-quattrocentohttpsfontsgooglecomspecimenquattrocento-and-quattrocento-sanshttpsfontsgooglecomspecimenquattrocentosans">1) <a target="_blank" href="https://fonts.google.com/specimen/Quattrocento">Quattrocento</a> and <a target="_blank" href="https://fonts.google.com/specimen/Quattrocento+Sans">Quattrocento Sans</a></h4>
<p>Designed by <a target="_blank" href="http://www.impallari.com/projects/overview/quattrocento-sans-family">Impallari Type</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/zNfljVE6AZ8XOrQYZ7eFV2vyz4HQu4Xl8ufl" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-2-roboto-condensedhttpsfontsgooglecomspecimenrobotocondensed-and-robotohttpsfontsgooglecomspecimenroboto">2) <a target="_blank" href="https://fonts.google.com/specimen/Roboto+Condensed">Roboto Condensed</a> and <a target="_blank" href="https://fonts.google.com/specimen/Roboto">Roboto</a></h4>
<p>Designed by <a target="_blank" href="http://www.christianrobertson.com">Christian Robertson</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ReHmr9Z-dzFaInlVdXlyYUIu5eIKb9uhVIi5" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-3-roboto-monohttpsfontsgooglecomspecimenrobotomono-and-robotohttpsfontsgooglecomspecimenroboto">3) <a target="_blank" href="https://fonts.google.com/specimen/Roboto+Mono">Roboto Mono</a> and <a target="_blank" href="https://fonts.google.com/specimen/Roboto">Roboto</a></h4>
<p>Designed by <a target="_blank" href="http://www.christianrobertson.com">Christian Robertson</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/og3awiIwwKCmyBctzrnN2prc3mhsMHMSfgUf" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-4-pt-sanshttpsfontsgooglecomspecimenptsans-and-pt-serifhttpsfontsgooglecomspecimenptserif">4) <a target="_blank" href="https://fonts.google.com/specimen/PT+Sans">PT Sans</a> and <a target="_blank" href="https://fonts.google.com/specimen/PT+Serif">PT Serif</a></h4>
<p>Designed by <a target="_blank" href="https://www.paratype.com">ParaType</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/boL6imZZTh-SoUvZkHqZTSxj83KwZJg3riJW" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-5-oxygen-monohttpsfontsgooglecomspecimenoxygenmono-and-oxygenhttpsfontsgooglecomspecimenoxygen">5) <a target="_blank" href="https://fonts.google.com/specimen/Oxygen+Mono">Oxygen Mono</a> and <a target="_blank" href="https://fonts.google.com/specimen/Oxygen">Oxygen</a></h4>
<p>Designed by <a target="_blank" href="http://sansoxygen.com">Vernon Adams</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/zdu5JsBbUVS5IxvvsmMlc9FQlmCUu9g1Ytzq" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-6-source-sans-prohttpsfontsgooglecomspecimensourcesanspro-and-source-serif-prohttpsfontsgooglecomspecimensourceserifpro">6) <a target="_blank" href="https://fonts.google.com/specimen/Source+Sans+Pro">Source Sans Pro</a> and <a target="_blank" href="https://fonts.google.com/specimen/Source+Serif+Pro">Source Serif Pro</a></h4>
<p>Designed by <a target="_blank" href="https://www.adobe.com/products/type/font-designers/paul-hunt.html">Paul D. Hunt</a> (Sans) and <a target="_blank" href="http://www.frgr.de">Frank Grießhammer</a> (Serif)</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/CGqM9CFFUJYtei7lOfRGVS0-UnShidlsXGfx" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-7-josefin-slabhttpsfontsgooglecomspecimenjosefinslab-and-josefin-sanshttpsfontsgooglecomspecimenjosefinsans">7) <a target="_blank" href="https://fonts.google.com/specimen/Josefin+Slab">Josefin Slab</a> and <a target="_blank" href="https://fonts.google.com/specimen/Josefin+Sans">Josefin Sans</a></h4>
<p>Designed by <a target="_blank" href="https://www.linkedin.com/in/santiagorozco/">Santiago Orozco</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/-j7jWIeVpONYJdQc6R9Wd3y8ML5YvhF0Ctmx" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-8-encode-sans-semi-condensedhttpsfontsgooglecomspecimenencodesanssemicondensed-and-encode-sanshttpsfontsgooglecomspecimenencodesans">8) <a target="_blank" href="https://fonts.google.com/specimen/Encode+Sans+Semi+Condensed">Encode Sans Semi Condensed</a> and <a target="_blank" href="https://fonts.google.com/specimen/Encode+Sans">Encode Sans</a></h4>
<p>Designed by <a target="_blank" href="http://www.impallari.com/projects/overview/quattrocento-sans-family">Impallari Type</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/iFrvUfEQrXppiQhe4n1tXJWIgSOmd7TzAhEA" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-9-alegreyahttpsfontsgooglecomspecimenalegreya-and-alegreya-sanshttpsfontsgooglecomspecimenalegreyasans">9) <a target="_blank" href="https://fonts.google.com/specimen/Alegreya">Alegreya</a> and <a target="_blank" href="https://fonts.google.com/specimen/Alegreya+Sans">Alegreya Sans</a></h4>
<p>Designed by <a target="_blank" href="https://huertatipografica.com/en">Huerta Tipográfica</a> (Alegreya) &amp; <a target="_blank" href="https://huertatipografica.com/en">Juan Pablo del Peral</a> (Aleygra Sans)</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xO9PVW1oOFL9YMRL2qLcwyW7RDWWvIKt0Jcy" alt="Image" width="800" height="600" loading="lazy"></p>
<h4 id="heading-10-montserrathttpsfontsgooglecomspecimenmontserrat-and-montserrat-alternateshttpsfontsgooglecomspecimenmontserratalternates">10) <a target="_blank" href="https://fonts.google.com/specimen/Montserrat">Montserrat</a> and <a target="_blank" href="https://fonts.google.com/specimen/Montserrat+Alternates">Montserrat Alternates</a></h4>
<p>Designed by <a target="_blank" href="http://www.zkysky.com.ar">Julieta Ulanovsky</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xDrIT6l3coKjofydsHm74TtHsXx6ZK59l2Fg" alt="Image" width="800" height="600" loading="lazy"></p>
<h3 id="heading-parting-words">Parting Words</h3>
<p>Finding a beautiful font pair for your next project doesn’t need to be stressful, painstaking, time-consuming, or difficult. Superfamilies are DESIGNED to look beautiful together and create visual harmony for your webpage. Learn to know and love them and you’ll be a great designer in no time!</p>
<p>Make sure you check out <a target="_blank" href="https://fontpair.co">Font Pair</a> where we help you pair Google Fonts together and have some awesome font superfamily suggestions for your next project!</p>
<h3 id="heading-extra-reading">Extra Reading</h3>
<p>Here are some more resources about superfamilies if you’re interested:</p>
<ul>
<li>Adobe Typekit Blog — <a target="_blank" href="https://blog.typekit.com/2012/05/23/type-study-pairing-typefaces/">Type Study: Pairing typefaces</a></li>
<li>FontLabVideos — <a target="_blank" href="https://www.youtube.com/watch?v=lwqAbMhbLoQ">Font Superfamilies Lecture with Sumner Stone</a></li>
<li>Fonts.com — <a target="_blank" href="https://www.fonts.com/content/learning/fyti/typefaces/super-families">Super Families</a></li>
<li>Google — <a target="_blank" href="https://fonts.google.com/featured/Superfamilies">Superfamilies</a></li>
<li>Wikipedia — <a target="_blank" href="https://en.wikipedia.org/wiki/Font_superfamily">Font Superfamily</a></li>
<li><a target="_blank" href="https://www.meermanno.nl/romulus-designs-by-jan-van-krimpen/">Romulus Designs by Jan van Krimpen</a></li>
</ul>
<p>Thanks to <a target="_blank" href="https://www.freecodecamp.org/news/low-hanging-design-fruit-why-you-should-use-google-font-superfamilies-1dae04b2fc50/undefined">Hayden</a> and Emma for all the help with this article.</p>
<p>Feel free to comment below or <a target="_blank" href="https://twitter.com/zachtsmith1994">reach out to me on Twitter</a>!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Designing a font from scratch — and submitting it to Google Fonts in 24 hours ]]>
                </title>
                <description>
                    <![CDATA[ By James Barnard One Day Builds I’m a huge fan of Adam Savage’s One Day Builds. At the beginning of the day he starts with a pile of materials, and ends up holding something that he once coveted (this one is my favourite). So with this in mind (and a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/designing-a-font-from-scratch-and-submitting-it-to-google-fonts-in-24-hours-152a30c57095/</link>
                <guid isPermaLink="false">66c34914c8f6b2d81069b33e</guid>
                
                    <category>
                        <![CDATA[ creativity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ illustrator ]]>
                    </category>
                
                    <category>
                        <![CDATA[ projects ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 20 Jan 2018 21:01:35 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*QepDSuhC1gDSvGtKoThKDQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By James Barnard</p>
<h3 id="heading-one-day-builds">One Day Builds</h3>
<p>I’m a huge fan of Adam Savage’s <a target="_blank" href="http://www.tested.com/search/?term=One+Day+Builds">One Day Builds</a>. At the beginning of the day he starts with a pile of materials, and ends up holding something that he once coveted (<a target="_blank" href="https://www.youtube.com/watch?v=-tUHJnl8qPM">this one is my favourite</a>).</p>
<p>So with this in mind (and a day off from work), I set myself a challenge…</p>
<blockquote>
<p>Create an entirely new font, from scratch, and submit it to Google Fonts in under 24 hours.</p>
</blockquote>
<p>I had a couple of letters already sketched out in an old notebook. I wanted to create a tall, sans-serif, display font that could be used in posters, or large scale artwork. In my early days at Men’s Health, I would have to use fonts like ‘Tungsten’ or ‘<a target="_blank" href="https://fontsinuse.com/uses/778/men-s-health-covers">Heron</a>’, which were terrible for chunks of body copy, but amazing when used in headlines, or for promotional material (which was my main job there). This was the style I set out to create.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/2PdTILZfWwOKSNJ8Fixlxkz5N2nNaQDhckjn" alt="Image" width="800" height="400" loading="lazy">
<em>(Very) rough sketches. Ugh.</em></p>
<h3 id="heading-1pm-wednesday">1pm, Wednesday</h3>
<p>I went straight to Adobe Illustrator with the two or three letter styles I had sketched out. I set up five grid lines on my artboard, one each for the descender line, baseline, x-height, cap height and ascender line. I then decided on a width for the capital letters, and from there, the thickness of the stem (e.g. the width of the letter <em>I</em>).</p>
<p>I did a <em>lot</em> of research on letter proportions and ratios, and actually measured some existing fonts, working out how the lowercase letters should relate to the caps. From here, I made some rules:</p>
<ul>
<li>X-height = 2 × height of ascender/descender.</li>
<li>Stem width = 1/4 capital letter width</li>
<li>Lowercase width = 3/4 capital letter width</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/slzBDK9aqVfTWLEYGO7QLi7nbg0EmID11meN" alt="Image" width="800" height="400" loading="lazy">
<em>The rules, illustrated.</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/a19CQX3CsAkFgm-RgaHGtZuRORJardzk-Zxd" alt="Image" width="800" height="400" loading="lazy"></p>
<p>From here I created the letters <em>O</em> and <em>B</em> first. I made a decision that any letters that would usually have curves, would have a rounded corner instead. Most letters would be a tall block shape, but with letters like <em>O</em>, <em>B</em> and <em>D</em>, the edges with curves would have rounded corners.</p>
<p>The outside corner would have a 12mm radius, and the inside had 6mm. With these rules agreed, plus a height for my crossbar (across the letter <em>H</em>) I started churning out my capital letters.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/bn9mtHPt-q6pLZ3f0VHcd3U49tOPFSwasBnz" alt="Image" width="800" height="400" loading="lazy"></p>
<p>My font was very simple, but with one defining ‘flourish’, if you will. Any aperture, which is the opening in a letter, like the cut in the letter <em>C</em>, or the end of any arc, like the curved end of the letter <em>J</em>, would be cut at an angle. The hardest letters here were <em>G</em> and <em>K</em>.</p>
<p>With the CAPS completed, I moved on to the lowercase letters. This was undoubtedly harder, but with my rules agreed upon, it was just a case of churning through them. I used a lot more of my ‘flourishes’ here, especially at the end of the ascenders and descenders. The letters <em>f</em>, <em>g</em>, <em>a</em> and <em>e</em> were the trickiest, as they were completely new styles.</p>
<h3 id="heading-9pm-wednesday">9pm, Wednesday</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/oZVh01AMJNnNyUh8BqyutSZAAB0R02Kt1bKJ" alt="Image" width="800" height="400" loading="lazy"></p>
<p>I was now moving on to some of the extra glyphs, like the question mark and exclamation mark. My pace picked up, and before bed I had managed to work up around 35 of them.</p>
<h3 id="heading-thursday-morning">Thursday morning</h3>
<p>In the morning, I completed the numbers 0 to 9 pretty quickly, and then began to actually create the font file.</p>
<p>This was completely new territory. <a target="_blank" href="https://twitter.com/Ian_Barnard"><strong>Ian Barnard</strong></a>, a calligrapher pal on twitter (with my surname), recommended a program called <a target="_blank" href="https://glyphsapp.com/">Glyphs</a>, which you can download for a free 30-day trial.</p>
<p>I downloaded Glyphs Mini and watched a couple of tutorial videos, then realised I’d set up my illustrator file completely wrong. So I had to paste each character in manually and scale it up to match the guides in the app.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/rpIRTxqRbIAZ1x5Txh34X2Ocm5wu9e2xQRo2" alt="Image" width="800" height="400" loading="lazy"></p>
<h3 id="heading-10am-thursday">10am, Thursday</h3>
<p>With my characters in place, I went about spacing and kerning the letters. This part was incredibly time consuming. There are a series of keyboard shortcuts in this app which you absolutely <em>must</em> master before setting out on this. And before starting the kerning process, you have to get your letter spacing as close as possible to how you want the file to look.</p>
<p>Apparently as a rule of thumb, measure the width of the counter of the letter <em>O</em> (the hole in the middle) and divide that by three. That is the spacing distance you should start with on the left and right side of your letters.</p>
<h3 id="heading-11am-thursday">11am Thursday</h3>
<p>With the spacing set up (accounting for wider letters like <em>M</em> and <em>W</em>) I started kerning. This was a massively painstaking process. I visited <a target="_blank" href="http://logofontandlettering.com/kernking.html">this website</a>, and pasted in their example kerning text.</p>
<p>Using the keyboard shortcuts (<a target="_blank" href="https://glyphsapp.com/tutorials/kerning">use this tutorial</a>) I plodded through and adjusted kerning groups for every single distance that didn’t look right to me. The obvious ones are between <em>V</em> and <em>A</em>, but there are so many letter pairings within that example copy that I wouldn’t have thought of.</p>
<p>Once complete, I converted the kerning text to all caps and did the whole thing again, to pair the capital letters.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/-Stu5S975yMzZylkzhG03lZCT6s2FmVUmYRH" alt="Image" width="800" height="400" loading="lazy"></p>
<h3 id="heading-1259pm-thursday">12:59pm Thursday</h3>
<p>I exported my font and converted it to a .ttf file ready to submit to Google. With quite a few glyphs still missing (like square brackets and copyright symbols), I was certain that it wouldn’t be accepted. I also didn’t have time to include the multitudes of accents required for full language support.</p>
<p>It’s not the greatest of fonts, but it wasn’t bad for my very first go. And considering I had to teach myself how to use the Glyphs software from scratch, and it was completed in a single day, I was pretty proud!</p>
<h3 id="heading-the-name">The name?</h3>
<blockquote>
<p>Odibee Sans</p>
</blockquote>
<p>…pronounced “oh-dee-bee”. My very own ‘One Day Build’ (ODB).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/cMIhEtykYfEY0sDRtcjGDnhFxlTXWZXVqNFn" alt="Image" width="800" height="1207" loading="lazy"></p>
<h3 id="heading-afterword">Afterword</h3>
<p>I submitted Odibee Sans to the Google Fonts team back in May 2017, and as it stands the font is still in <a target="_blank" href="https://github.com/google/fonts/issues/952">their pipeline to be added</a>. The team quite rightly suggested that I should spend some additional time on the font to refine the design (although they admitted that this was against the spirit of the project).</p>
<p>With this in mind I spent an additional day on the font. I have since added all the extra glyphs (I think) required for extended latin support. I also made some major changes to around 30 of the glyphs, including new styles for the letters (caps) S, B, R, and lower case s, c, y, a, e, r, f, t, p, q and j, as well as a couple of number tweaks.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/t-Y8qY9SHx3Cc1Sy7oSvegwmgadldZBCqcsE" alt="Image" width="800" height="400" loading="lazy"></p>
<p>On top of this, there are now more than 1500 kerning pairs, which has made a massive improvement to the typeface.</p>
<p>And I made a website! <a target="_blank" href="http://odibeesans.com/"><strong>odibeesans.com</strong></a></p>
<p>The site was <em>also</em> made in a day using Adobe Muse. <a target="_blank" href="http://barnard.co/how-i-launched-a-website-in-a-day-with-adobe-muse/">More on this here.</a></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0fi3RfjjLZSIftoRJEULj2r7u78jUEtutqXi" alt="Image" width="800" height="2494" loading="lazy"></p>
<p>Thanks for reading! I’d love to read about any projects you may have tackled in one day. It’s quite an effective technique, if you can spare the time (God bless the freelance lifestyle)!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How Typography Determines Readability: Serif vs. Sans Serif, and How To Combine Fonts. ]]>
                </title>
                <description>
                    <![CDATA[ By Harshita Arora #  For digital design, it’s important to know and understand how to use and how to combine different fonts. There’s a font for every mood! This post is going to give you a quick introduction to the biggest families in Typography: S... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-typography-determines-readability-serif-vs-sans-serif-and-how-to-combine-fonts-629a51ad8cce/</link>
                <guid isPermaLink="false">66c35667cf1314a450f0d69b</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ fonts ]]>
                    </category>
                
                    <category>
                        <![CDATA[ style ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 16 Jan 2018 21:55:22 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*jouWgdGEHlsARCuI9iuRDw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Harshita Arora</p>
<p># </p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/nUU-No03jpFVHrTWqBw94WwQfB5uKgPONxEU" alt="Image" width="800" height="600" loading="lazy"></p>
<p>For digital design, it’s important to know and understand how to use and how to combine different fonts. There’s a font for every mood!</p>
<p>This post is going to give you a quick introduction to the biggest families in Typography: Serif and Sans Serif. And how, as a designer, you can choose the right fonts and combine them.</p>
<p>Let’s start!</p>
<h3 id="heading-serif-type-family">Serif Type Family</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/eaeix2N4fgkoDj0udtUmJy1AxjTeHMp5DOoo" alt="Image" width="209" height="53" loading="lazy">
<em>Example of a Serif font.</em></p>
<p>The typeface Serif is differentiated from Sans Serif by the tiny little feet-like thingy called Serifs.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/u53FoM3ihvScG8u59XLlVrC6ft9xA28hYSvS" alt="Image" width="209" height="53" loading="lazy">
<em>The areas in red are called the serif.</em></p>
<p>A lot of Serif typefaces that you’ll see will look a lot more traditional or conservative.</p>
<p><strong>Origins</strong>: The reason they have these tiny feet is actually because of stone carving. Back in the days when people needed to carve out Latin letters in stone, the designer would usually paint the letters they wanted with a paintbrush. But the stonemasons would have to carve it out from that painting. And that stone carving created these serifs on the letters.</p>
<p>People tend to use Serif typefaces for something quite serious. This is because of their traditional and conservative look and feel.</p>
<p>Serif is further divided into four typeface families.</p>
<h4 id="heading-1-old-style"><em>1. Old</em> <em>Style</em></h4>
<p>This is the oldest Serif family. It includes fonts such as Adobe Jenson, Centaur, Goudy Old style, and many more. Their typeface is modeled on what text used to look like in the 1400s. Very old-looking.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/7erShLB7mzQwdPvahu-zb6Z-jsjfidEYHrN9" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-2-transitional"><em>2. Transitional</em></h4>
<p>This is a bit more modern-looking. This typeface family includes Times New Roman, Baskerville, Georgia, etc.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/dlHWqQNT4qDvdIK400Pd6TGjM740ediuM-2l" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-3-modern"><em>3. Modern</em></h4>
<p>Even more modern-looking and classy-looking. This includes Didot, which is the typeface used for the title of Vogue magazine.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/5gK8e3uBtSdjsIOEfXubM1fqOsVIUIXkdDtt" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-4-slab-serif">4. Slab-Serif</h4>
<p>They’re a type family with thick serifs. Examples of slab-Serif typefaces include American Typewriter, Archer, etc.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ZWOM9ApMDtBsxXShNBQjoHfYhK3lvh-vf3RZ" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<p>Now, how do you differentiate between these four major classes in the Serif Family?</p>
<p>It’s actually quite easy. Look at the first three families: Old style, Transitional, and Modern. Put them side-by-side. If you have a look at the thinnest versus the thickest part of the letters, you’ll see that as you progress from the older to the more modern types. You’ll see an increased difference in what we call the modulation of the typefaces. Concentrate on the O’s for example. Comparing the Old Style to the modern types, the thickness and thinness difference will be lesser compared to Modern.</p>
<p>And a lot of this modulation comes from when people used to write with flat-nibbed pens.</p>
<p>What about Slab-Serif?</p>
<p>If you have a look at a Slab-Serif font, you’ll see there’s pretty much zero difference between the thickest and the thinnest parts of the font.</p>
<p>And it was designed intentionally like this. It’s one of the modern members of the Serif family. Yet, it doesn’t follow the rule of “more into the future you go, the greater the difference between the thickest and thinnest part of the font.” Slab-Serif was created for newspaper printing for clearer reading when the quality of the paper used to be poor.</p>
<h3 id="heading-sans-serif-type-family">Sans-Serif Type Family</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/IVRM3NFH79gUKvhLPeMolpaddVmMm8XPdrQE" alt="Image" width="212" height="43" loading="lazy">
<em>Example of a Sans-Serif font</em></p>
<p>Sans-Serif differs from the Serif. It does not have serifs (the tiny little feet) or any decorative elements along the central beams and the top bars. Sans-Serif is slightly more modern than the serifs.</p>
<p>They’re also subdivided into four families.</p>
<h4 id="heading-1-grotesque"><em>1. Grotesque</em></h4>
<p>The oldest one. This includes News Gothic, Franklin Gothic, and more.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/-hlApvxSTW3lg6xZZl1RlmEGROJ8ptDJeRSn" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-2-neo-grotesque"><em>2. Neo-Grotesque</em>:</h4>
<p>Slightly more modern. Helvetica and Ariel are examples.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/NgkPgjVkJ1iD17VupsOBcZxRLzB7Sk2Gzb7M" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-3-humanist"><em>3. Humanist:</em></h4>
<p>Even more in the future. Gill Sans is an example.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/6P6DpKU5Uwzi2P5ItRHksqlR3Eiw3hBTMDY9" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-4-geometric"><em>4. Geometric</em>:</h4>
<p>They’re based on geometric shapes. Futura is an example.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/kLWMJzZyH-we9JQzJWD8NjomyuBEs9cteYh7" alt="Image" width="550" height="400" loading="lazy">
_[Image credits](https://www.noupe.com/essentials/icons-fonts/a-crash-course-in-typography-the-basics-of-type.html" rel="noopener" target="<em>blank" title=")</em></p>
<p>How do you differentiate between the four?</p>
<p>Now, similar to the serifs, you can move from the older Grotesque family to the Neo-Grotesque to the Humanist. You can see the difference in the thickest and the thinnest parts of the font get more and more exaggerated. When you look at the Grotesque, it’s almost equidistant at all points. And when you look at the Humanist typefaces, you start to see the variation of the modulation.</p>
<p>In a Geometric typeface, the O’s are always perfectly round. The O’s look exactly like as if you draw with a protractor. And this typeface is a bit like Slab-Serif type. Even though it’s one of the modern typefaces in the family, it bucks the trend and pretty much has no modulation and is equidistant at all points.</p>
<h3 id="heading-how-typography-determines-readability">How Typography Determines Readability</h3>
<p>Having a knowledge of the font families and their subfamilies helps with styling. But more importantly, it’s about readability. Design is both about function and form. What makes a typeface more readable?</p>
<p>Humanist Sans-Serif is considered to be more readable than Grotesque. And the reasons are:</p>
<ul>
<li>Humanist typeface has more open shapes.</li>
<li>The inter-character spacing in the Humanist typeface is more than in Grotesque, making it slightly easier to read.</li>
<li>In the Grotesque typeface, the characters are ambiguous from each other. A lowercase ‘g’ and 9 in Grotesque look pretty similar, they’re all very square, adding more confusion and making it less readable. Whereas in the Humanist typeface, you can clearly differentiate between the characters.</li>
</ul>
<p>These are some factors that make fonts more readable. Now you can choose the typeface depending on the purpose.</p>
<h3 id="heading-how-to-combine-fonts">How to combine fonts</h3>
<p>When you’re combining different typefaces, usually you’ll have a different typeface for the heading and a different one for the body. And this is to create a slight contrast and interest in your designs.</p>
<p>Some of the common rules that designers use when they combine different fonts :</p>
<ol>
<li>The Serifs and Sans-Serif work really well together. It tends to create a good design. Sans-Serif have slightly increased readability compared to Serifs. Which is why Sans-Serif is a great typeface for the body of text.<br>Don’t combine a Serif with a Serif and a Sans-Serif with a Sans-Serif because it can look a little bland and undifferentiated.</li>
<li>Too many fonts in one design is not a good thing. It ends up looking too strange. Stick to 2 fonts (one from Serif family and the other from Sans-Serif).</li>
<li>Appreciate the mood of the typeface just like colors. And don’t combine different moods together. Try to combine more modern fonts with modern fonts and older fonts with more traditional ones.<br>If you get the mood of your typefaces, you start to create some incredibly beautiful designs.<br>Things that you should keep similar: Mood and Time era of the font<br>Things that you should contrast: Serif-ness (for instance, one font should be Serif and the other Sans-Serif) and Weights.<br>Weight means how heavy or bold your text is. Most design software have a whole range of weights. For example, light, medium, bold, extra bold, and so on. Play around with different weights contrasting them to create interesting designs.</li>
</ol>
<p>NEVER EVER use — Comic Sans, Papyrus, Viner, Kristen, Curlz. No matter what you’re designing, they’ll make your designs look terrible.</p>
<h3 id="heading-tools-for-typography">Tools for Typography</h3>
<ol>
<li><a target="_blank" href="https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm?hl=en">WhatFont</a><br>A chrome extension that tells you the name of a font on any website.</li>
<li><a target="_blank" href="https://www.fontsquirrel.com/">Font Squirrel</a><br>I usually download fonts from here. They’re free for commercial use.</li>
</ol>
<p>That was a brief overview of the vast field of typography. Hope you learned interesting things that you can use in your designs! :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to choose and pair typefaces ]]>
                </title>
                <description>
                    <![CDATA[ The act of choosing two typefaces is probably the first (and often most difficult) task you do when creating a new design. Many people get stuck here, myself included. Recently, I discovered a simple method to pair typefaces effectively and I’d love ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-choose-and-pair-typefaces-98fee945d13c/</link>
                <guid isPermaLink="false">66c4c74abd556981b1bdc470</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Zell Liew ]]>
                </dc:creator>
                <pubDate>Sat, 04 Mar 2017 17:32:01 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*CugOEud0tfSYwOwmJo8oXw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The act of choosing two typefaces is probably the first (and often most difficult) task you do when creating a new design. Many people get stuck here, myself included.</p>
<p>Recently, I discovered a simple method to pair typefaces effectively and I’d love to share them with you. (Hint: it’s a 3×3 grid).</p>
<p>There’s one prerequisite to use this 3×3 grid (which I will reveal shortly) — knowing how to categorize typefaces. So, let’s start there.</p>
<h3 id="heading-categorizing-typefaces">Categorizing typefaces</h3>
<p>On a broad level, typefaces can be broken down into the six categories. They are:</p>
<ol>
<li>Sans-serif</li>
<li>Serif</li>
<li>Slab-serifs (or Egyptians)</li>
<li>Monospace</li>
<li>Script (or Cursive)</li>
<li>Display (or Decorative)</li>
</ol>
<p>You can split typefaces into the <strong>first three categories</strong> by looking at the <strong>style of the serif</strong>.</p>
<p>If the typeface contains <em>no serifs</em>, they fall into the <em>sans-serif category</em>. (sans means without). Examples of sans-serif typefaces include Helvetica and Gill sans.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Srrogk5YjZTvJzgrop3s6yJ9aWmFVVHif22t" alt="Image" width="800" height="302" loading="lazy"></p>
<p>If the typeface contains serifs that look <em>blocky</em>, they fall under the <em>slab-serif</em> category. (slab means a large thick block). Slab-serifs are also called <em>Egyptians</em> even though there’s no relationship between the serifs and Egyptian writing. Examples of slab-serifs include Archer and Museo Slab.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Q0nuhT1hzFqbDfv0CQNqGC3UEb5OlJc4QThn" alt="Image" width="800" height="356" loading="lazy"></p>
<p><em>Any other typeface</em> that <em>contains serifs</em> fall under the <em>serifs</em> category. Examples include Garamond and Georgia.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/HCsPE5HFKxTg-iq8u3SpZ2i5RK1ooanyfNid" alt="Image" width="800" height="285" loading="lazy"></p>
<p><em>Monospace</em> typefaces are no strangers to us developers. They’re typefaces whose characters occupy the same amount of horizontal space. They’re often used in tabular data and code. Examples include Menlo and Monaco.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/aTPjCwAXyrz9q1ONmMETDe35u2amWYyEg1co" alt="Image" width="800" height="367" loading="lazy"></p>
<p><em>Script</em> (or cursive) typefaces are often calligraphic in nature. They’re often used for short headlines, invitations and expressive text. Examples include Dancing Script and Lobster.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/e2Xte4EBQR5XbRe6VYjkhU-mvaMb6xXLC02I" alt="Image" width="800" height="191" loading="lazy"></p>
<p>Finally, <em>display typefaces</em> are typefaces that are only used for large headlines. Many display typefaces are serif and sans-serif versions that are specially tweaked to look good at large sizes. Display typefaces also include <em>ornamentals</em> and <em>decoratives</em>, which can come in all sorts of form and styles. Examples include Freight Display and Abril Fatface.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/FUbeMSixHmQojUmj2ryEDmlWB7UWNiwmz7j0" alt="Image" width="800" height="173" loading="lazy"></p>
<p>Now you know how to classify typefaces into six major categories, which is great! Unfortunately, these major categories are too broad.</p>
<p>To pair typefaces effectively, we often have to drill in deeper into the subcategories. We’re only going to look at sans-serifs, serifs and slab-serifs as we drill deeper since most typeface choices are made there.</p>
<p>Things begin to get confusing when you begin to subcategorize. There’s a lot of subcategories, including but not limited to <em>humanist</em>, <em>neo-humanist</em>, <em>old style</em>, <em>grotesque</em>, <em>neo-grotesque</em>, <em>transitional</em>, <em>geometric</em> and <em>modern</em>.</p>
<p><em>Remembering</em> the names of these subcategories, <em>differentiating</em> between them and correctly <em>placing typefaces in them</em> are three major challenges people face, myself included. After much research, I noticed you can group these subcategories into a simple <strong>3×3 grid</strong>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/bR6w9oL3266j1FYl8WPzU3uVYXVQ4Kva9yXm" alt="Image" width="800" height="450" loading="lazy"></p>
<p>To fill up the 3×3; grid, we can look at three properties of the typeface. They are:</p>
<ol>
<li>The letterforms</li>
<li>The stroke</li>
<li>The tilt</li>
</ol>
<p>For the first two properties, it’s often enough to look at letters <em>e</em> and <em>o</em>. The third one is a layman term I came up with ?.</p>
<p>Let’s look at each of them.</p>
<h3 id="heading-the-letterforms">The letterforms</h3>
<p>Pay careful attention to the <em>shape of the letters</em>, especially of the letters <em>e</em> and <em>o</em>. Do they look like <em>circles</em> or <em>squares</em>? If they do, we can immediately classify the typeface as a <strong>geometric typeface</strong>.</p>
<p><strong>Geometric</strong> typefaces contain letterforms that are based off shapes. They look constructed as opposed to handwritten. Because of they seem constructed, they also give off a <em>modern</em>, <em>cool</em> and <em>impersonal</em> vibe.</p>
<p>The geometric subcategory is only applicable to sans-serif and slab-serif typefaces. So, we can fill up the 3×3 grid as follows:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ghRubrM1bmcGDYgBCeGUoTIjGuNYcyaMtCWV" alt="Image" width="800" height="450" loading="lazy"></p>
<p>Next, we look at the stroke.</p>
<h3 id="heading-the-contrast-in-strokes">The contrast in strokes</h3>
<p>The <em>stroke</em> of a typeface is <em>lines that make it up</em>. Pay attention to these lines. Do they vary in size between different parts of the letters?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/KpVIWpvJXsmVU5yz8UDlJrk04TX3F2nlSRxP" alt="Image" width="800" height="301" loading="lazy"></p>
<p>When we look at the stroke of a typeface, we’re only interested in using it to <em>categorize serifs</em>. This is because it’s rare for sans-serif and slab-serifs to exhibit any difference in the stroke.</p>
<p>If there’s <em>little stroke contrast</em> (little difference between thinnest and thickest part), we can categorize the typeface as an <strong>old-style serif</strong>.</p>
<p>Old-style serifs are serifs that the oldest readable typefaces (according to our current standards. Blackletter comes before it, which is hardly readable now). They mimic handwriting and are thus calligraphic in nature, which causes their letters to tilt more (more on tilt later). Since they mimic handwriting, they’re often seen as <em>real</em>, <em>empathetic</em> and <em>traditional</em>. They are also known as <strong>humanist serifs</strong>.</p>
<p>On the other hand, if there’s <em>huge stroke contrast</em>, we can categorize the typeface as a <strong>Modern serif</strong>.</p>
<p>Modern serifs are deliberately constructed to stand out. Their letterforms often stand upright with zero tilt, which makes them <em>cool</em> and <em>impersonal</em>, like Geometric typefaces. They are also known as <strong>rational serifs</strong> and <strong>didones</strong>.</p>
<p>Finally, what lies between modern serifs and old-style serifs are <strong>transitional</strong> serifs. Their <em>stroke contrast</em> is distinguishably <em>larger than old-style</em> serifs, but <em>not as much as modern</em> ones.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/H8j5A4UMOkbN1ZVpl0smx0cfgSGQD9FG45pd" alt="Image" width="800" height="410" loading="lazy"></p>
<p>After going through the stroke, our 3×3 grid becomes:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ScmmROG1F-qoX2JBAkOGywI1jNlBBWzzgZ6A" alt="Image" width="800" height="450" loading="lazy"></p>
<p>Lets move on to the tilt.</p>
<h3 id="heading-the-tilt">The tilt</h3>
<p>If you draw a line through the thinnest points of the stroke, you’ll see the stress of the letters.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/L7Wa0YKlEd19hilGCBZ3NhxoC1XYrD0JoQM7" alt="Image" width="800" height="314" loading="lazy"></p>
<p>If you paid attention so far, you’ll notice that stress can only be used to distinguish serif subcategories because you need to draw a line through the thinnest parts of the letterforms.</p>
<p>Although it may seem pointless to look at stress since we already have sorted serifs into their respective categories, I found it helpful to distinguish between sans-serif humanist and grotesque typefaces.</p>
<p>Let me explain.</p>
<p>Letterforms with a diagonal stress (like old-style serifs) look like they’re <em>tilted at an angle</em>. Since they’re tilted, they mimic letters that are <em>created by hand</em>. (We don’t hold the pen perfectly upright, do we?).</p>
<p>Although the letters <em>o</em> and <em>e</em> can’t tell us if there’s any <em>stress</em>, we can look at other letters, especially those with shoulders, like <em>h</em>, <em>m</em> and <em>n</em>. If any of these shoulders looks as if they’re <em>tilted</em> (or if there’s any stress), we can categorize the typeface as a <strong>humanist typeface</strong>.</p>
<p>An example of a humanist sans-serif typeface that exhibits this behavior is Lucida Sans.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/wfeA-bcbvsASY5RnjvxTBDvKLlPEdmzdjEFY" alt="Image" width="800" height="639" loading="lazy"></p>
<p>On the other hand, if the letters look like they’re upright, we can categorize them as <strong>grotesque</strong> typefaces. As you may imagine, grotesque typefaces fall between humanist and geometric typefaces.</p>
<p>Just to add to your typography vocabulary, grotesque typefaces are also called <em>grotesk</em> or <em>gothic</em>, depending on the language. So, if you see these names on a typeface, you’ll know immediately which category these fall under.</p>
<p>Want an example? How about Aktiv Grotesk? :)</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/10DBRhqEce8AvCBz2fmX5aCwWJim48DF8ySY" alt="Image" width="800" height="569" loading="lazy"></p>
<p>After looking at the <em>tilt</em>, we can finally complete the 3×3 grid:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/P9O1GvEqWTHLiBAplk3Wni3epDyX-Q4QnM8U" alt="Image" width="800" height="450" loading="lazy"></p>
<p>And with that, we’re done with categorizing typefaces into their respective categories and subcategories.</p>
<p>Before we move onto the next section, I want to highlight that <em>typeface classification is highly subjective</em>. Everyone classifies typefaces differently, so you just have to decide for yourself. Some typefaces can fall into multiple subcategories too. One example is Proxima Nova, which can fall into all three sans-serif subcategories at the same time.</p>
<h3 id="heading-using-the-33-grid">Using the 3×3 grid</h3>
<p>If you search around for typeface pairing rules, you’ll often come across the following two rules, among others:</p>
<ol>
<li>Pair sans-serif typefaces with serif (or slab-serif) typefaces</li>
<li>Pair typefaces from the same era</li>
</ol>
<p>If you follow the first rule, you automatically create contrast with your two typefaces, which is a good thing. I explain why contrast is so important in my typography course, <a target="_blank" href="https://mastering-responsive-typography.com/">Mastering Responsive Typography</a>.</p>
<p>The reason why experts recommend you to pair typefaces from the same era (or even from the same designer) is because these typefaces contain similar letterforms. Similar letterforms create a sense of familiarity through repetition, which is why different typefaces can blend well with each other. (<a target="_blank" href="https://zellwk.com/blog/why-vertical/rhythm">Read this article</a> an explanation of why repetition creates familiarity.)</p>
<p>Coincidentally (maybe not!), our 3×3 grid helps you identify typefaces created in the same era without remembering the subcategories. It’s used this way:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/iuY4jsokOk7SQRXsPTbjlmmliQELyDS1zsiv" alt="Image" width="800" height="450" loading="lazy"></p>
<p>(This is mind blowing, isn’t it? ?)</p>
<h3 id="heading-wrapping-up">Wrapping up</h3>
<p>Today, you learned how to categorize typefaces into six major subcategories, and their respective subcategories. You also learned a technique to pair them (using the 3×3 grid).</p>
<p>Now go play around with the technique and let me know your thoughts in the comments!</p>
<p>This article as a sample of my responsive typography course, <a target="_blank" href="https://mastering-responsive-typography.com/">Mastering Responsive Typography</a>. You can check it out, and also learn more about typography on <a target="_blank" href="https://zellwk.com/blog/">my blog</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why Typography Matters — Especially At The Oscars ]]>
                </title>
                <description>
                    <![CDATA[ By benjamin bannister There was a major twist ending and a major snafu at the very end of the 2017 Academy Awards for the category of Best Picture. The wrong winner was declared. If you look back on the footage and analyze it, you could read on Warre... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-typography-matters-especially-at-the-oscars-f7b00e202f22/</link>
                <guid isPermaLink="false">66c3672921ae2d74bb700a0b</guid>
                
                    <category>
                        <![CDATA[ Oscars ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 27 Feb 2017 15:31:06 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*QZbMZH9PNKkEujjUaGOWKQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By benjamin bannister</p>
<p>There was a <em>major</em> twist ending and a <em>major</em> snafu at the very end of the 2017 Academy Awards for the category of Best Picture. <em>The wrong winner was declared.</em> If you look back on the <a target="_blank" href="http://www.slate.com/blogs/browbeat/2017/02/27/moonlight_wins_best_picture_as_incredible_twist_ending_makes_2017_oscars.html">footage</a> and analyze it, you could read on Warren Beatty’s face that something was not right just before the Best Picture winner was announced.</p>
<p>Let’s quickly review the second-by-second timeline of what happened:</p>
<ol>
<li>Warren Beatty and Faye Dunaway come out to present Best <em>Picture</em>, but were wrongly given the envelope for Best <em>Actress</em>, instead.</li>
<li>Warren reads the card, then stops for a moment to read it again to be sure (which the audience thinks is supposed to be comical). He even checks to see if there’s anything else in the envelope.</li>
<li>He then proceeded to show Faye Dunaway the card with a facial expression that likely reads, “is this right?”</li>
<li>Before he could say anything to her, Faye automatically reads the card (which looks like she didn’t fully read it), and announced the wrong winner.</li>
<li>The biggest flub in Oscars’ 88-year run is now recorded history.</li>
</ol>
<p>I would imagine there are multiple redundancies so that something like this does not happen — especially at the Oscars! But there’s one thing the Academy possibly didn’t consider, or forgot, for this year’s winner cards: <strong>typography</strong>.</p>
<blockquote>
<p>“<strong>Typography</strong> is the art and technique of arranging type to make written language legible, readable, and appealing when displayed” — <a target="_blank" href="https://en.wikipedia.org/wiki/Typography">Wikipedia</a></p>
</blockquote>
<p>Here’s the original screenshot of the Best Picture winner’s card, which breaks a lot of the rules I just quoted:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ZAGKRHYTohkXHJJ2Ar7XuE6ystmbgGGxCbBI" alt="Image" width="800" height="449" loading="lazy">
<em><strong>Original televised screenshot.</strong> Image: ABC</em></p>
<p>First, it’s legible, you can tell all the letters apart. Second, it’s somewhat readable, but the visual weight of “Moonlight” and the producers are equal and blend together. Lastly, even though it is <em>just</em> a winner’s card, it’s not visually appealing. I think it’s fair to say it’s objectively bland.</p>
<p>Based on <em>that</em> card design, I’ve reconstructed the card Warren and Faye <strong><em>would’ve seen</em>,</strong> the one they <em>received</em>:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/6vYlpSrRPKJKLATCcmvtdgMwtzj5rMpIYoi7" alt="Image" width="800" height="449" loading="lazy"></p>
<p>That’s <strong>horrible</strong> typography. I will emphasize horrible again. <strong>Horrible</strong>. Or to be nicer — not good. Look at it again. Of course, anyone could’ve made the same honest error!</p>
<blockquote>
<p>The words “Best Actress” is on there — at the very bottom — in small print!</p>
</blockquote>
<p>You are on television with millions of people around the world watching. You are a little nervous, and you have to read a card. You will most likely read it from <em>top to bottom</em> (visual hierarchy) without questioning whether the card is right. That look on Warren’s face was, “This says ‘Emma Stone’ on it.” Faye must’ve skipped that part and was caught up in the excitement and just blurted out, “La La Land.”</p>
<p>I don’t blame Faye or Warren for this. This was the fault of two entities: whoever was in charge of the design of the winning card (Was it really a design? C’mon), and the <a target="_blank" href="http://www.thewrap.com/oscar-stage-manager-pwc-accountants-incompetence/">unfortunate person</a> who handed them the wrong envelope.</p>
<p>A clearly designed card <em>and</em> envelope (don’t even get me started on that gold on red envelope) would've prevented this.</p>
<p>Here are the main three things wrong with the winner cards in general:</p>
<ol>
<li>We all know this is the Oscars, but the logo doesn’t need to be at the top of the card.</li>
<li>The category, “Actress,” is on the bottom, in small print.</li>
<li>The winner’s name, the main thing that should be read, is the same size as the second line and given equal weight.</li>
</ol>
<p>Now, let’s imagine an <strong>alternate timeline</strong> where the presenters were given <em>this modified version</em> of the <em>wrong</em> card, using the same elements of the original card:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/TAmi8CDHq9O8pGMop55hAHIxjLx3pIwoqF5y" alt="Image" width="800" height="449" loading="lazy">
_<strong>Modified version of the wrong card.</strong> Image: [benjamin bannister](http://www.benjaminbannister.com/" rel="noopener" target="<em>blank" title=")</em></p>
<p>It may not seem like much to a regular person, but changing the sizing, positioning, and weight of the text makes a <strong>big difference</strong>. A big enough difference that this embarrassing mistake could’ve been prevented.</p>
<p>Let’s analyze the differences between the original card and my modified card with a side-by-side comparison of subtle, yet important changes.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/pFyIwUqgOMLP3req8gerx-PH2KDhbu--JDOM" alt="Image" width="800" height="449" loading="lazy">
_<strong>Same text, same elements, but different styling.</strong> Image: [benjamin bannister](http://www.benjaminbannister.com/" rel="noopener" target="<em>blank" title=")</em></p>
<p>Here’s what should’ve been changed based on the three critiques I just made:</p>
<ol>
<li>The logo doesn’t need to be at the top. Everyone knows it’s the Oscars. <strong>We move the Oscar logo to the bottom</strong> where it’s least important in this context.</li>
<li><strong>The award category, “Best Actress,” is moved to the top</strong> so that it’s the first thing anyone sees and reads. There is no confusion what the category is because it’s clearly stated <strong>first</strong>.</li>
<li>Emma Stone’s name is <strong>bigger</strong> than the title, “La La Land,” because she is the winner of this category. <strong>The <em>winner</em> should be the most emphasized thing on the card</strong> with all other information, like the film’s title, in a smaller or a less thick font (I understand that the text can only be so big so as to have a consistent look for all the cards, while accommodating longer names).</li>
</ol>
<p>That’s it. That’s all the designer needed to do. Those three things. I guess hiring a card designer wasn’t in the budget this year.</p>
<p>With a modified card, <em>even if</em> the presenters had gotten the wrong one, none of this would’ve happened because the presenters would’ve looked at it and one of two things would’ve happened: their eyes would’ve read “Best Actress,” or, “Emma Stone.” Reading either of those would indicate that this <em>wasn’t</em> the card for <em>Best Picture</em>, and they would’ve asked Jimmy Kimmel or a producer to the stage to get it corrected.</p>
<blockquote>
<p>The card needed to be written and designed in a way that makes it clear to the reader only the essential information.</p>
</blockquote>
<p>As a creator, the importance of typography is an <em>absolute</em> skill to know, and people — not just designers, should consider learning it. Typography can be immensely helpful when writing a resume that’s well-structured, creating a report that looks exciting, designing a website with an intuitive hierarchy — and definitely for designing award show winner cards.</p>
<p>And lastly, to the <a target="_blank" href="http://oscar.go.com"><em>Academy of Motion Picture Arts and Sciences</em></a>, I would like to submit my design template for the 90th Academy Awards winner’s card (my commission fee is more than reasonable, and this is only one of many ideas). The card is clean and easy to read for any presenter, with only relevant information. Even the words, “The Oscars,” don’t need to be on there (fewer words to read). The statue graphic works fine.</p>
<h4 id="heading-and-a-big-congratulations-to-moonlighthttpswwwgooglecomurlsatamprctjampqampesrcsampsourcewebampcd5ampcadrjaampuact8ampved0ahukewjh3pxivllsahvcocykhyxrbiqqfghimaqampurlhttp3a2f2fwwwimdbcom2ftitle2ftt49757222fampusgafqjcneklw9x-gvd3kzqmviaejpfv0cgnwampsig2behgfwou-cfoqh-1krix6qampbvmbv148073327dewe-for-winning-best-picture">And a big congratulations to <a target="_blank" href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=5&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwjH3PXivLLSAhVCOCYKHYXrBIQQFghiMAQ&amp;url=http%3A%2F%2Fwww.imdb.com%2Ftitle%2Ftt4975722%2F&amp;usg=AFQjCNEKlw9X-GVd3KZQmViAEJPfv0cGnw&amp;sig2=behgfWoU-cFoQh-1kRiX6Q&amp;bvm=bv.148073327,d.eWE"><strong>Moonlight</strong></a> for winning <em>Best Picture</em>!</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/LxZIxFygG4TW-Apeudhp-TRhMIHXuxVYWBJJ" alt="Image" width="800" height="450" loading="lazy">
_<strong>Oscar Winner Card, front mockup.</strong> Image: [benjamin bannister](http://www.benjaminbannister.com/" rel="noopener" target="<em>blank" title=")</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/fddZJicqPgMJs9HFpRjWf-iSFuHizmiShELH" alt="Image" width="800" height="450" loading="lazy">
_<strong>Oscar Winner Card, back mockup.</strong> Image: [benjamin bannister](http://www.benjaminbannister.com/" rel="noopener" target="<em>blank" title=")</em></p>
<blockquote>
<p>Show your support by clapping this article, tweeting it, sharing it, and follow me to discover new things.</p>
</blockquote>
<p><img src="https://cdn-media-1.freecodecamp.org/images/omnH12WrvZW8P6LzPd2kYEYk4cIuolKjBMtw" alt="Image" width="425" height="245" loading="lazy">
_[<strong>benjaminbannister.com</strong>](http://www.benjaminbannister.com/" rel="noopener" target="<em>blank" title=")</em></p>
<p><strong>Also by benjamin bannister:</strong></p>
<ul>
<li><a target="_blank" href="https://medium.com/@benjaminbannister/the-future-of-the-iphone-x-from-the-realistic-to-the-absurd-f33bee3288ea">The Future of the iPhone X: From the Realistic to the Absurd</a></li>
<li><a target="_blank" href="https://medium.com/@benjaminbannister/macpad-pro-two-worlds-united-a8c6f4c51eb3">What Would An Apple MacPad Pro Look Like?</a></li>
<li><a target="_blank" href="https://medium.com/@benjaminbannister/how-i-learned-to-cook-in-a-month-save-money-and-eat-well-801e88b46a5e">How I Learned to Cook. In One Month.</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Everything I know about web responsive typography ]]>
                </title>
                <description>
                    <![CDATA[ Responsive typography is a tough nut to crack. This was the best method I could come up with when I first started creating responsive websites: p {   font-size: 16px; } @media (min-width: 800px) {   p {     font-size: 18px;   } } ]]>
                </description>
                <link>https://www.freecodecamp.org/news/everything-i-know-about-responsive-web-typography-c774c2138f5c/</link>
                <guid isPermaLink="false">66c4c72d99f22436b71945e9</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ typography ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Zell Liew ]]>
                </dc:creator>
                <pubDate>Mon, 18 Jan 2016 03:55:28 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*y46Tvi_apZUxaZnxQzQ_sg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Responsive typography is a tough nut to crack. This was the best method I could come up with when I first started creating responsive websites:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
}

<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">800px</span>) {
  <span class="hljs-selector-tag">p</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">18px</span>;
  }
}

<span class="hljs-comment">/* Repeat for h1 - h6 and other type groups */</span>
</code></pre>
<p>I’ve learned a lot more about typography since then and picked up best practices like using relative units, vertical rhythms and meaningful typography scales.</p>
<p>These new practices were wonderful. They made my websites look more pleasing to the eye. Implementing them, however, was a horrible experience.</p>
<p>I had to write complex code and I found myself struggling to create responsive websites under tremendous time pressure.</p>
<p>Now, after months of hacking, I’ve finally created a solution that I’m happy to share with you. It’s called Typi.</p>
<p>Typi is great because it allows me to use the practices I’ve learned, and at the same time solves most of the problems I’ve encountered in 3 simple steps. Let me explain these three steps by walking you through the practices I use when working with responsive typography.</p>
<h3 id="heading-practice-1-increase-font-size-and-line-height-of-your-body-copy-as-screen-sizes-increase">Practice 1: Increase font-size and line-height of your body copy as screen sizes increase.</h3>
<p>Reading on the mobile vs the desktop are two completely different experiences. You undoubtedly hold your device closer to you when you read on the mobile since the screen is smaller.</p>
<p>Your desktop screen will be further away from you compared to the mobile. Hence, the same font-size on the desktop looks slightly smaller due to the further distance.</p>
<p>To increase readability and compensate for the loss in size due to distance, we increase the font size.</p>
<p>I first got to know of this practice through the <a target="_blank" href="https://ia.net/know-how/responsive-typography-the-basics">responsive typography basics</a> post on <a target="_blank" href="http://ia.net/">ia.net</a>. I highly suggest checking the post out if you’re unfamiliar with what I’m talking about.</p>
<p>An implementation of this practice in Sass can be this:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;

  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">18px</span>;
  }

  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 20<span class="hljs-selector-tag">px</span>;
  }
}
</code></pre>
<p>Note: as we increase font sizes, we might also need to increase the line height to allow more breathing room between lines of text. With Sass, this can look like:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.3</span>;

  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">18px</span>;
  }

  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 20<span class="hljs-selector-tag">px</span>;
    <span class="hljs-selector-tag">line-height</span>: 1<span class="hljs-selector-class">.4</span>;
  }
}
</code></pre>
<h3 id="heading-practice-2-use-a-modular-scale-for-your-typography">Practice 2: Use a modular scale for your typography</h3>
<p>It’s difficult to pick the font-size of your typographic elements (</p><h1 id="heading-to"> to </h1><h6 id="heading-especially-if-youre-trying-to-pull-them-out-of-thin-air-a-modular-scale-also-called-typography-scale-is-a-tool-you-can-use-to-help-you-pick-good-typography-sizes-that-flow-well-with-the-rest-of-your-page-it-is-a-sequence-of-numbers-related-to-each-other-through-a-ratio-a-number-it-can-be-created-by-multiplying-or-dividing-the-font-size-of-your-body-copy-with-the-ratio-the-resultant-number-is-then-multiplied-or-divided-again-with-the-ratio-an-implementation-of-modular-scale-at-work-with-the-above-scale-can-be-this-html-font-size-16px-h1-font-size-50px-h2-font-size-37px-h3-font-size-28px-of-course-its-not-going-to-be-so-simple-if-you-remember-the-first-practice-we-discussed-earlier-in-this-article-youll-notice-that-the-body-font-size-should-change-as-your-screen-width-changes-this-becomes-a-problem-when-you-have-to-change-the-typography-sizes-of-all-your-elements-at-every-breakpoint-to-ensure-the-scale-stays-consistent-html-font-size-16px-line-height-13-media-min-width-800px-font-size-18px-media-min-width-1200px-font-size-20px-line-height-14-h1-font-size-50px-media-min-width-800px-font-size-56px-media-min-width-1200px-font-size-63px-h2-font-size-37px-media-min-width-800px-font-size-42px-media-min-width-1200px-font-size-47px-h2-font-size-28px-media-min-width-800px-font-size-32px-media-min-width-1200px-font-size-35px-ugh-the-solution-check-out-the-next-practice-note-if-you-need-help-with-choosing-your-starting-font-size-and-ratio-for-your-modular-scale-i-suggest-reading-this-article-on-meaningful-typography-by-tim-brown">), especially if you’re trying to pull them out of thin air. A modular scale, also called typography scale, is a tool you can use to help you pick good typography sizes that flow well with the rest of your page.<p></p>
<p>It is a sequence of numbers related to each other through a ratio (a number). It can be created by multiplying (or dividing) the font-size of your body copy with the ratio. The resultant number is then multiplied (or divided) again with the ratio.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0*3so2OEKM6Cicnkg8.png" alt="Image" width="800" height="328" loading="lazy"></p>
<p>An implementation of modular scale at work with the above scale can be this:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span> }
<span class="hljs-selector-tag">h1</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">50px</span> }
<span class="hljs-selector-tag">h2</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">37px</span> }
<span class="hljs-selector-tag">h3</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">28px</span> }
// ...
</code></pre>
<p>Of course, it’s not going to be so simple. If you remember the first practice we discussed earlier in this article, you’ll notice that the body font-size should change as your screen width changes.</p>
<p>This becomes a problem when you have to change the typography sizes of <em>all your elements</em> at <em>every breakpoint</em> to ensure the scale stays consistent.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.3</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">18px</span>;
  }

  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 20<span class="hljs-selector-tag">px</span>;
    <span class="hljs-selector-tag">line-height</span>: 1<span class="hljs-selector-class">.4</span>;
  }
}

<span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">50px</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">56px</span>;
  }
  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 63<span class="hljs-selector-tag">px</span>;
  }
}

<span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">37px</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">42px</span>;
  }
  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 47<span class="hljs-selector-tag">px</span>;
  }
}

<span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">28px</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">32px</span>;
  }
  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 35<span class="hljs-selector-tag">px</span>;
  }
}
// ...
</code></pre>
<p>Ugh.</p>
<p>The solution? Check out the next practice.</p>
<p>Note: If you need help with choosing your starting font-size and ratio for your modular scale, I suggest reading this <a target="_blank" href="http://alistapart.com/article/more-meaningful-typography">article on meaningful typography</a> by Tim Brown.</p>
</h6><h3 id="heading-practice-3-use-relative-typography-units">Practice 3: Use relative typography units</h3>
<p>Relative units in CSS are percentages (%), viewport units (vh, vw, vmin, vmax) , the em unit (em) and the rem unit (rem). The ones commonly used to size typography are <strong>em</strong> and <strong>rem</strong>.</p>
<p>You can use both <strong>em</strong> and <strong>rem</strong> in the same manner to solve the problem we encountered in practice 2. To convert pixels into em, we take the target font-size and divide it against the base-font size.</p>
<p>Here’s how it would look:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">18px</span>;
  }
  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 20<span class="hljs-selector-tag">px</span>;
  }
}

<span class="hljs-selector-tag">h1</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.125em</span>; } // 50 ÷ 16 = 3<span class="hljs-selector-class">.125</span>
<span class="hljs-selector-tag">h2</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.3125em</span>;} // 37 ÷ 16 = 2<span class="hljs-selector-class">.3125</span>
<span class="hljs-selector-tag">h3</span> { <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.75em</span>; } // 28 ÷ 16 = 1<span class="hljs-selector-class">.75</span>
// ...

// <span class="hljs-selector-tag">Note</span>: <span class="hljs-selector-tag">These</span> <span class="hljs-selector-tag">are</span> <span class="hljs-selector-tag">approximate</span> <span class="hljs-selector-tag">values</span>.
// <span class="hljs-selector-tag">The</span> <span class="hljs-selector-tag">actual</span> <span class="hljs-selector-tag">values</span> <span class="hljs-selector-tag">derived</span> <span class="hljs-selector-tag">from</span> <span class="hljs-selector-tag">modularscale</span><span class="hljs-selector-class">.com</span> <span class="hljs-selector-tag">are</span> 3<span class="hljs-selector-class">.129em</span>, 2<span class="hljs-selector-class">.3353em</span> <span class="hljs-selector-tag">and</span> 1<span class="hljs-selector-class">.769em</span> <span class="hljs-selector-tag">respectively</span>.
</code></pre>
<p>Much better now!</p>
<p>There are a few more problems. Notice how </p><h1 id="heading-becomes-approximately-63px-as-the-screen-width-increases-to-1200px-63px-is-pretty-large-reading-the"> becomes approximately 63px as the screen width increases to 1200px.<p></p>
<p>63px is pretty large. Reading the </p></h1><h1 id="heading-text-starts-to-get-uncomfortable-already-a-better-decision-might-be-to-tone-it-down-to-47px-instead-size-of"> text starts to get uncomfortable already. A better decision might be to tone it down to 47px instead (size of </h1><h2 id="heading-when-this-happens-you-might-want-to-decrease-the-size-of-the">).<p></p>
<p>When this happens, you might want to decrease the size of the </p></h2><h2 id="heading-element-since-its-a-good-practice-to-emphasize-the">element since it’s a good practice to emphasize the </h2><h1 id="heading-element-sometimes-you-might-also-need-to-change-the-line-height-as-well-the-code-then-becomes-html-font-size-16px-media-min-width-800px-font-size-18px-media-min-width-1200px-font-size-20px-h1-font-size-3129em-line-height-12-media-min-width-1200px-font-size-23353em-line-height-13-h2-font-size-23353em-media-min-width-1200px-font-size-1769em-h3-font-size-1769em-media-min-width-1200px-font-size-133em-ugh-back-to-square-one-this-is-where-typi-comes-in-lets-take-a-break-from-the-practices-and-see-how-typi-can-help-you"> element. Sometimes, you might also need to change the line-height as well.<p></p>
<p>The code then becomes…</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">800px</span>) {
    font-size: <span class="hljs-number">18px</span>;
  }
  <span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
    <span class="hljs-selector-tag">font-size</span>: 20<span class="hljs-selector-tag">px</span>;
  }
}

<span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.129em</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.2</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    font-size: <span class="hljs-number">2.3353em</span>;   
    <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.3</span>;
  }
}

<span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.3353em</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    font-size: <span class="hljs-number">1.769em</span>;   
  }
}

<span class="hljs-selector-tag">h3</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.769em</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    font-size: <span class="hljs-number">1.33em</span>;
  }
}

// ...
</code></pre>
<p>Ugh. Back to square one :(</p>
<p>This is where <a target="_blank" href="https://github.com/zellwk/typi">Typi</a> comes in. Let’s take a break from the practices and see how Typi can help you.</p>
</h1><h3 id="heading-using-typi">Using Typi</h3>
<p>Typi is a Sass library that allows you to set the font-size and line-height properties of all your typographic elements in separate Sass maps. These maps can then be used to output the code we see in the above situation. Here’s how it works.</p>
<p>First, you need to setup a $typi map. It looks like this:</p>
<pre><code class="lang-css">$<span class="hljs-selector-tag">typi</span>: (
  <span class="hljs-selector-tag">null</span>: 16<span class="hljs-selector-tag">px</span>,
  <span class="hljs-selector-tag">small</span>: 18<span class="hljs-selector-tag">px</span>,
  <span class="hljs-selector-tag">large</span>: 20<span class="hljs-selector-tag">px</span>
);
</code></pre>
<p>null, small and large are breakpoints.</p>
<p>Typi automatically looks for a $breakpoints map to create your media queries (which means it can integrate perfectly with <a target="_blank" href="https://github.com/zellwk/mappy-breakpoints">mappy-breakpoints</a>, a library I created to help with media queries).</p>
<pre><code class="lang-css">$<span class="hljs-selector-tag">breakpoints</span>: (
  <span class="hljs-selector-tag">small</span>: 800<span class="hljs-selector-tag">px</span>,
  <span class="hljs-selector-tag">large</span>: 1200<span class="hljs-selector-tag">px</span>
);
</code></pre>
<p>Once the $typi map is set up, we call the typi-base() mixin within the html selector.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  @include typi-base();
}
</code></pre>
<p>This typi-base() mixin creates the same styles we wrote for the  tag in Practice 2. The only difference is that the font-sizes are stated in percentages.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">100%</span>; <span class="hljs-comment">/* This means 16px */</span>
}

<span class="hljs-keyword">@media</span> all <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">800px</span>) {
  <span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">112.5%</span>; <span class="hljs-comment">/* This means 18px */</span>
  }
}

<span class="hljs-keyword">@media</span> all <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
  <span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">125%</span>; <span class="hljs-comment">/* This means 20px */</span>
  }
}
</code></pre>
<p>We also mentioned that there might be a need to change line-height values as the font-size changes. You can change line-height values easily in Typi by providing a second line-height value to each breakpoint that requires it:</p>
<pre><code class="lang-css">$<span class="hljs-selector-tag">typi</span>: (
  <span class="hljs-selector-tag">null</span>: (16<span class="hljs-selector-tag">px</span>, 1<span class="hljs-selector-class">.3</span>), // <span class="hljs-selector-tag">Sets</span> <span class="hljs-selector-tag">line-height</span> <span class="hljs-selector-tag">to</span> 1<span class="hljs-selector-class">.3</span>
  <span class="hljs-selector-tag">small</span>: 18<span class="hljs-selector-tag">px</span>,
  <span class="hljs-selector-tag">large</span>: (20<span class="hljs-selector-tag">px</span>, 1<span class="hljs-selector-class">.4</span>) // <span class="hljs-selector-tag">Sets</span> <span class="hljs-selector-tag">line-height</span> <span class="hljs-selector-tag">to</span> 1<span class="hljs-selector-class">.4</span>
);
</code></pre>
<p>The resultant CSS from our updated $typi map is:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">100%</span>; <span class="hljs-comment">/* This means 16px */</span>
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.3</span>;
}

<span class="hljs-keyword">@media</span> all <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">800px</span>) {
  <span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">112.5%</span>; <span class="hljs-comment">/* This means 18px */</span>
  }
}

<span class="hljs-keyword">@media</span> all <span class="hljs-keyword">and</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
  <span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">125%</span>; <span class="hljs-comment">/* This means 20px */</span>
    <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.4</span>;
  }
}
</code></pre>
<p>After creating the $typi map, we can create other font-maps using the same format. Here’s an example:</p>
<pre><code class="lang-css">$<span class="hljs-selector-tag">h1-map</span>: (
  <span class="hljs-selector-tag">null</span>: (3<span class="hljs-selector-class">.129em</span>, 1<span class="hljs-selector-class">.2</span>),
  <span class="hljs-selector-tag">large</span>: (2<span class="hljs-selector-class">.3353em</span>, 1<span class="hljs-selector-class">.3</span>)
  );

$<span class="hljs-selector-tag">h2-map</span>: (
  <span class="hljs-selector-tag">null</span>: 2<span class="hljs-selector-class">.3353em</span>,
  <span class="hljs-selector-tag">large</span>: 1<span class="hljs-selector-class">.769em</span>
  );

$<span class="hljs-selector-tag">h3-map</span>: (
  <span class="hljs-selector-tag">null</span>: 1<span class="hljs-selector-class">.769em</span>,
  <span class="hljs-selector-tag">large</span>: 1<span class="hljs-selector-class">.333em</span>
  );
// ...
</code></pre>
<p>Then, we call each of these font-maps using the typi mixin:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">h1</span> { @include typi($h1-map) }
<span class="hljs-selector-tag">h2</span> { @include typi($h2-map) }
<span class="hljs-selector-tag">h3</span> { @include typi($h3-map) }
// ...
</code></pre>
<p>The resultant CSS would be:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.129em</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.2</span>;
}

<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
  <span class="hljs-selector-tag">h1</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.3353em</span>;
    <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.3</span>;
  }
}

<span class="hljs-selector-tag">h2</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.3353em</span>;
}

<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
  <span class="hljs-selector-tag">h2</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.769em</span>;
  }
}

<span class="hljs-selector-tag">h3</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.769em</span>;
}

<span class="hljs-keyword">@media</span> (<span class="hljs-attribute">min-width:</span> <span class="hljs-number">1200px</span>) {
  <span class="hljs-selector-tag">h3</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.333em</span>;
  }
}
</code></pre>
<p>Pretty neat huh? You’ll have to <a target="_blank" href="https://github.com/zellwk/typi">download Typi</a> to play with it. (It’s not available on Sassmeister or Codepen yet)</p>
<p><strong>PROTIP</strong>: You can use the modular scale Sass mixin if you don’t want to write exact em values (like 1.769em) across different font maps.</p>
<p>To do so, you have to <a target="_blank" href="https://github.com/modularscale/modularscale-sass">download the library</a> and import it into your Sass file. Then, change the font maps such that it uses the ms() function.</p>
<pre><code class="lang-css">$<span class="hljs-selector-tag">h1-map</span>: (
  <span class="hljs-selector-tag">null</span>: (<span class="hljs-selector-tag">ms</span>(4) 1<span class="hljs-selector-class">.2</span>),
  <span class="hljs-selector-tag">large</span>: (<span class="hljs-selector-tag">ms</span>(3), 1<span class="hljs-selector-class">.3</span>)
  );

$<span class="hljs-selector-tag">h2-map</span>: (
  <span class="hljs-selector-tag">null</span>: <span class="hljs-selector-tag">ms</span>(3),
  <span class="hljs-selector-tag">large</span>: <span class="hljs-selector-tag">ms</span>(2)
  );

$<span class="hljs-selector-tag">h3-map</span>: (
  <span class="hljs-selector-tag">null</span>: <span class="hljs-selector-tag">ms</span>(2),
  <span class="hljs-selector-tag">large</span>: <span class="hljs-selector-tag">ms</span>(1)
  );
// ...
</code></pre>
<p>So, in a nutshell, <a target="_blank" href="https://github.com/zellwk/typi"><strong>Typi</strong></a> makes responsive typography easier by helping you <strong>write font-size and line-height properties at different breakpoints`</strong>.</p>
<p>Now that I’m done introducing you to Typi, let’s move on and talk about the final two practices (and some problems that I have yet to find a solution for).</p>
<h3 id="heading-practice-4-apply-vertical-rhythms">Practice 4: Apply vertical rhythms</h3>
<p>Vertical Rhythms is a concept from print design, where we keep vertical spaces between elements on a page consistent (and relative) to each other. The idea is similar to using a typography scale — to allow elements on your page to flow well.</p>
<p>In practice, we often use the line-height property of the body copy as the base for a consistent vertical rhythm. Let’s say the body copy of your website has <strong>line-height of 25px</strong>. You’ll do two things:</p>
<ol>
<li>Set the <strong>vertical white space between elements</strong> to a <strong>multiple of 25px</strong></li>
<li>Set the <strong>line-height of all text elements</strong> to a <strong>multiple of 25px</strong></li>
</ol>
<p>This is how it might look like in CSS (Note: This hasn’t taken the three practices I mentioned above into account yet)</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">18px</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">25px</span>;
}

// <span class="hljs-selector-tag">Resets</span> <span class="hljs-selector-tag">margins</span>
<span class="hljs-selector-tag">body</span>, <span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
}

<span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">63px</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">75px</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">25px</span> <span class="hljs-number">0</span>;
}

<span class="hljs-selector-tag">p</span> + <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">25px</span>;
}
</code></pre>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/zellwk/embed/WrjOoa" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>Looks pretty good! Let’s take it a step further by changing the code above into relative units. While doing so, you’ll encounter the great em vs rem debate.</p>
<h3 id="heading-em-vs-rem">Em vs Rem</h3>
<p>Let’s try converting the code first into <strong>ems</strong>, then <strong>rems</strong>. By the way, the <a target="_blank" href="https://css-tricks.com/almanac/properties/l/line-height/">best practices states that line-height values should be unitless</a>.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.125em</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.4</span>; // This is 25.2px to be accurate
}

// <span class="hljs-selector-tag">Resets</span> <span class="hljs-selector-tag">margins</span>
<span class="hljs-selector-tag">body</span>, <span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
}

<span class="hljs-selector-tag">h1</span> {
  // font size is 63.147px to be more precise
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.5082em</span>; // 63.147 ÷ 18 = 3.5082em
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.1972</span>; // 75.6 ÷ 63.147 =  1.1972
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0.3991em</span> <span class="hljs-number">0</span>; // 25.2 ÷ 63.147 = 0.3991
}

<span class="hljs-selector-tag">p</span> + <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">1.4em</span>;
}
</code></pre>
<p>Pay special attention to how we converted the margin property on the </p><h1 id="heading-element-into-ems-notice-how-we-used-63147px-as-the-base-for-the-division-this-must-be-done-because-sizes-calculated-with-ems-are-relative-to-its-current-font-size-it-often-causes-confusion-and-involves-a-lot-of-complex-math-now-heres-the-kicker-even-though-we-tried-to-be-as-accurate-as-we-can-be-browsers-dont-seem-to-cooperate-with-us-youll-notice-that-our-vertical-rhythms-start-getting-screwy-two-problems-contributed-to-this-screwy-behavior-first-were-not-100-precise-and-accurate-with-our-math-we-could-get-more-precise-like-10-decimal-places-but-that-would-make-our-code-ugly-as-hell-second-different-browsers-handle-subpixel-rounding-issues-differently-this-means-well-never-be-able-to-get-pixel-perfect-rhythms-no-matter-how-hard-we-try-well-i-dont-want-to-harp-on-subpixel-rounding-because-theres-nothing-much-we-can-do-lets-take-a-look-at-how-the-rem-unit-handles-this-complex-math-instead-shall-we-html-font-size-1125rem-line-height-14-this-is-252px-to-be-accurate-resets-margins-body-h1-p-margin-0-h1-font-size-35082rem-63147-18-35082-line-height-11972-756-63147-11972-margin-14rem-0-252-18-14-p-p-margin-top-14rem-notice-how-we-used-14rem-on-the-margin-property-instead-of-03991em-the-rem-unit-makes-calculations-with-vertical-rhythms-much-simpler-this-doesnt-mean-you-should-switch-blindly-to-the-rem-unit-though-rems-and-em-units-are-both-useful-and-they-should-be-used-for-different-purposes-ill-write-about-this-topic-another-day-for-now-lets-come-back-to-vertical-rhythms-now-that-weve-converted-our-vertical-rhythms-into-relative-units-lets-take-a-look-at-how-it-fares-when-we-combine-it-with-practice-one-font-sizes-and-line-heights-should-change-when-screen-sizes-change-were-going-to-keep-this-example-as-simple-as-possible-by-using-only-one-media-query-were-also-going-to-use-the-rem-unit-html-font-size-1125em-line-height-14-media-min-width-1200px-font-size-125em-this-is-20px-slight-change-in-line-heights-at-1200px-line-height-145-this-is-29px-resets-margins-body-h1-p-margin-0-h1-font-size-35082em-line-height-11972-margin-145rem-0-media-min-width-1200px-font-size-is-now-70164px-line-height-124-29px-3-70164-124-margin-145rem-0-p-p-margin-top-14em-media-min-width-1200px-margin-top-145em-ugh-we-might-have-to-add-20000-media-queries-to-change-margin-and-line-height-of-all-our-elements-with-just-this-one-change-in-the-line-height-property-on-we-havent-even-talked-about-padding-or-border-properties-yet"> element into ems.<p></p>
<p>Notice how we used 63.147px as the base for the division? This must be done because sizes <strong>calculated with ems are relative to it’s current font-size</strong>. It often causes confusion and involves a lot of complex math.</p>
<p>Now, here’s the kicker. Even though we tried to be as accurate as we can be, browsers don’t seem to cooperate with us. You’ll notice that our vertical rhythms start getting screwy.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/zellwk/embed/jWmKKZ" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>Two problems contributed to this screwy behavior.</p>
<p>First, we’re not 100% precise and accurate with our math. We could get more precise (like 10 decimal places), but that would make our code ugly as hell.</p>
<p>Second, different browsers handle subpixel rounding issues differently. This means we’ll never be able to get pixel-perfect rhythms no matter how hard we try.</p>
<p>Well, I don’t want to harp on subpixel rounding because there’s nothing much we can do. Let’s take a look at how the rem unit handles this complex math instead, shall we?</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.125rem</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.4</span>; // This is 25.2px to be accurate
}

// <span class="hljs-selector-tag">Resets</span> <span class="hljs-selector-tag">margins</span>
<span class="hljs-selector-tag">body</span>, <span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
}

<span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.5082rem</span>; // 63.147 ÷ 18 = 3.5082
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.1972</span>; // 75.6 ÷ 63.147 = 1.1972
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">1.4rem</span> <span class="hljs-number">0</span>; // 25.2 ÷ 18 = 1.4
}

<span class="hljs-selector-tag">p</span> + <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">1.4rem</span>;
}
</code></pre>
<p>Notice how we used 1.4rem on the margin property instead of 0.3991em? The <strong>rem unit makes calculations</strong> with vertical rhythms <strong>much simpler</strong>.</p>
<p><strong>This doesn’t mean you should switch blindly to the rem unit</strong> though. Rems and em units are both useful, and they should be used for different purposes. I’ll write about this topic another day. For now, let’s come back to vertical rhythms.</p>
<p>Now that we’ve converted our vertical rhythms into relative units, let’s take a look at how it fares when we combine it with practice one (font-sizes and line-heights should change when screen sizes change).</p>
<p>We’re going to keep this example as simple as possible by using only one media-query. We’re also going to use the rem unit.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.125em</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.4</span>;

  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    font-size: <span class="hljs-number">1.25em</span>; // this is 20px
    // Slight change in line heights at 1200px
    <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.45</span> // this is <span class="hljs-number">29px</span>
  }
}

// <span class="hljs-selector-tag">Resets</span> <span class="hljs-selector-tag">margins</span>
<span class="hljs-selector-tag">body</span>, <span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
}

<span class="hljs-selector-tag">h1</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3.5082em</span>;
  <span class="hljs-attribute">line-height</span>: <span class="hljs-number">1.1972</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">1.45rem</span> <span class="hljs-number">0</span>;

  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    // font-size is now <span class="hljs-number">70.164px</span>
    line-height: <span class="hljs-number">1.24</span>; // 29px * 3 ÷ 70.164 = 1.24
    <span class="hljs-attribute">margin</span>: <span class="hljs-number">1.45rem</span> <span class="hljs-number">0</span>;
  }
}

<span class="hljs-selector-tag">p</span> + <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">margin-top</span>: <span class="hljs-number">1.4em</span>;
  @media (<span class="hljs-attribute">min-width</span>: <span class="hljs-number">1200px</span>) {
    margin-top: <span class="hljs-number">1.45em</span>
  }
}
</code></pre>
<p>Ugh. We might have to add 20,000 media queries to change margin and line-height of all our elements with just this one change in the line-height property on . We haven’t even talked about padding or border properties yet!</p>
</h1><h3 id="heading-kokvr8kw4pahwrdvvinilavulug4ps74psb4ps7">(╯°□°）╯︵ ┻━┻</h3>
<p>So, here’s what I realized. <strong>It’s impossible to apply perfect responsive vertical rhythms across different browsers</strong>. At least not with the current technology.</p>
<p>What we can do instead is:</p>
<ol>
<li>We can make do with line-height properties of major typographic elements by eyeballing and using Typi.</li>
<li>Try not to change the line-height property of your body copy if you can. Things will become easier when <a target="_blank" href="http://caniuse.com/#search=css%20var">CSS variables</a> are finally supported in all major browsers.</li>
</ol>
<h3 id="heading-practice-5-keep-text-measures-between-4575-characters">Practice 5: Keep text measures between 45–75 characters</h3>
<p>Oh, this one is easy. Just remember this: one character is approximately 0.5em. A text measure between 45–75 characters means the width of your text element must be between 22.5em and 37.5em.</p>
<p>From experience, I’m mostly concerned about text overflowing 75 characters. If your text goes below 45 characters, maybe it’s time to have a change of font sizes.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">article</span> {
  <span class="hljs-attribute">max-width</span>: <span class="hljs-number">30em</span>;
  <span class="hljs-comment">/* Anywhere between 22.5em to 37.5em. Use your discretion */</span>
}
</code></pre>
<h3 id="heading-wrapping-up">Wrapping Up</h3>
<p>Responsive typography is hard. There are still no perfect answers we can rely on, but let’s try to make do for now.</p>
<p>By the way, here’s the link to <a target="_blank" href="https://github.com/zellwk/typi">Typi</a> again if you want to play with it.</p>
<blockquote>
<p>This article first appeared on my blog at <a target="_blank" href="http://zell-weekeat.com">www.zell-weekeat.com</a>. Check it out if you want more articles like this</p>
</blockquote>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
