Publishers of technology books, eBooks, and videos for creative people

Home > Articles > Web Design & Development > CSS

  • Print
  • + Share This
This chapter is from the book

Web Fonts Demystified

A now widely implemented CSS feature is the capability to embed downloadable fonts into your pages, using the @font-face rule.

@font-face gives designers greatly expanded font options beyond the basic system fonts. Now you can ensure that the fonts you specify are available to your user’s browser because they are downloaded to the browser from a Web server and you no longer have to rely on your font choices being installed on the user’s device.

There are three ways to specify Web fonts:

  • Use a hosted font library that delivers fonts to your Web pages, such as Google Web Fonts or Adobe’s Typekit
  • Use a pre-packaged @font-face kit
  • Generate an @font-face kit from one of your own fonts using Font Squirrel

Let’s start with the easiest method—accessing a hosted font library.

Hosted Font Libraries

The two largest hosted font libraries are Google Web Fonts, which offers free use of their 500-plus font collection, and Adobe’s Typekit, which offers subscription-based access to their collection of 739 font families. Both have easy-to-use interfaces.

Here’s how the process works on Google Web Fonts. Go to, find the font you want, click the Add to Collection button, then click Use at the bottom of the page (Figure 4.14). Google then generates a link tag with a reference to your selected fonts that you paste into the head of your HTML file.

Figure 4.14

Figure 4.14. The font, Niconne, is added to my collection so Google will generate a link to this font.

Multiple fonts can be linked in a single line of code. This link tag references the Anton, Niconne, and Prata fonts.

Once you have added the link in the head of the page, you can then use the fonts in the same way as you would use any other font. When your page is viewed, the font is served into your user’s page directly from Google. For example


displays as shown in Figure 4.15.

Figure 4.15

Figure 4.15. Your users now see the headline in Prata.

Using a hosted font library offers a quick and reliable way to extend the otherwise limited palette of system fonts. You can add Google fonts to your pages in minutes, and by using them in your designs you can be virtually certain that your users will view your pages in the font that you intended.

Packaged @font-face Kit

The second method of embedding fonts in your pages uses the @font-face rule, which requires that the fonts are accessible from your site’s, or a third-party, Web server. Fonts served in this way download to the browser when the first page that uses each font loads; after that, they are cached in the user’s browser and don’t have to download again. Note that the user can’t use the font for any purpose except to display Web pages that include that font.

The @font-face approach involves more effort, but offers the possibility to use virtually any font you wish. Because of licensing restrictions, you must either purchase a font, or use a royalty-free font, that is licensed for embedding.

One issue with using @font-face is that different browsers require different font formats. The Firefox browser, and Webkit browsers such as Safari, Chrome, and mobile Safari iOS since v4.1, use OpenType (OTF) or TrueType (TTF) font formats. Internet Explorer uses the Embedded OpenType (EOT) format, and some other browsers, such as mobile Safari pre-iOS 4.1, use the Scalable Vector Graphics (SVG) format. However, the different font formats are available in ready-to-use kits, or can be readily generated from a font on your computer (again, ensure you have a license to use the font in this way).

Font Squirrel ( offers an extensive library of fonts in ready-to-use “font kits.” Each font kit includes the font in all the required font formats, and the related CSS code to ensure that each browser is served the correct format. FontSquirrel also has a converter that allows you to upload and convert any font into a font kit.

Here is an example of Font Squirrel’s @font-face CSS code for the font Ubuntu Titling Bold, but this format will work for fonts from other sources, too.

Once this code is added to the page you can reference it with a font-family rule in the normal way, using the font-family name that is stated in the font-family value of the @font-face rule.

Generated @font-face Kit

Sometimes, you need to use a specific font in your design—a typical situation is that a client has a corporate font that you must use in the Web site you are designing. Today, as long as you have licensing rights to use that font as a Web font (check the font’s license agreement or check with the company that manufactured the font), you can convert that font into an @font-face kit at Font Squirrel ( Just follow the simple steps and in a few minutes, you will have downloaded an @font-face kit that is ready to go onto your server.

Before I move on to some examples of designing with type, I’ll make a couple of observations on embedded fonts. Until the day that all browsers manufacturers settle on one font format (which probably should be OpenType), you will have to deal with the complexities of multiple font formats. You can learn all about the preceding multi-font @font-face syntax, and how it ensures Internet Explorer gets the required .eot format font, at Fontspring’s Blog ( Fontspring also sells fonts that are licensed for use with @font-face.

Since the inception of the Web, designers have been limited, except with great effort, to fonts that are generally available on the PC and Mac operating systems. The long-awaited implementation of @font-face in all modern browsers, including IE9 and later, finally gives Web designers the access to the same smorgasbord of fonts available to their print brethren. The fallback for older browsers that don’t support @font-face is simple: Those users simply get the next font listed in the font stack, so be sure to list other more common fonts that are found on users’ systems after your preferred embedded ones.

  • + Share This
  • 🔖 Save To Your Account