Font Smoothing in Webkit and Firefox

By  on  

I don't pretend to be a typography or design expert -- I just know what looks good and what doesn't.  A few years ago I saw a few CSS properties I didn't recognize and when I toggled them on and off, the text went from beautiful to...not so beautiful.  It was a welcome to the world of font smoothing.  I recommend reading this post to learn more about what font smoothing is, but in this post I'll give you the CSS properties and values you need to know:

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

The difference in font presentation with and without font smoothing is fairly significant:

With smoothing: Font Smoothing - With

Without smoothing: Font Smoothing - Without

The difference is subtle but usually eye-pleasing and softer. When you go about picking custom fonts for your next website, try to experiment with font smoothing -- it may have a large effect on content readability!

Recent Features

  • By
    Camera and Video Control with HTML5

    Client-side APIs on mobile and desktop devices are quickly providing the same APIs.  Of course our mobile devices got access to some of these APIs first, but those APIs are slowly making their way to the desktop.  One of those APIs is the getUserMedia API...

  • By
    How I Stopped WordPress Comment Spam

    I love almost every part of being a tech blogger:  learning, preaching, bantering, researching.  The one part about blogging that I absolutely loathe:  dealing with SPAM comments.  For the past two years, my blog has registered 8,000+ SPAM comments per day.  PER DAY.  Bloating my database...

Incredible Demos

  • By
    spellcheck Attribute

    Many useful attributes have been provided to web developers recently:  download, placeholder, autofocus, and more.  One helpful older attribute is the spellcheck attribute which allows developers to  control an elements ability to be spell checked or subject to grammar checks.  Simple enough, right?

  • By
    CSS Kwicks

    One of the effects that made me excited about client side and JavaScript was the Kwicks effect.  Take a list of items and react to them accordingly when hovered.  Simple, sweet.  The effect was originally created with JavaScript but come five years later, our...

Discussion

  1. Thanks for sharing. Is it support for all kind of browsers?

    • No, this would be only supported on the browsers in Apple OS platforms.

  2. Luis

    Hello David,

    You are using lossy jpg files for the example images, which blur around the edges of the text. That renders the font comparison less realistic.

    • Thank you, Luis. Do you have any suggestions on fixes and where I might find some information on how to implement those? A more natural solution is preferable, and I’ll take multiple recommendations if you have them. Thank you again!

  3. Thank you so much! I could never figure out why my site looked so much worse on Firefox than Chrome. Added this to my body CSS and now they look the same!

    • Jason

      Same with me! Thank you for sharing David

    • Hi, Jason, thank you for adding your name to the list. If you find a solution, could you share it here?

  4. Thanks for sharing this! Making fonts look good, readable and beautiful is half the battle won, when setting up a web page.

  5. Hey, what’s the best way to achieve div elements swapping/reordering? I have div1, div2 and div3. I’d like them to be 2,1,3 on mobile. Thanks.

    • flex order is your friend.

  6. Chris

    Messing with font aliasing is bad, it may look good on YOUR computer, but turns out even worse than before on other people’s computers.
    This is most apparent when you’re going from one OS to another, where fonts are different even when using the same font name.

    Think twice before you’re going to do this, especially when it’s browser prefixed only and not part of a standard yet.

    • James

      “… where fonts are different even when using the same font name.”

      They shouldn’t be, unless you’ve made a mistake when declaring the typefaces, or have a local font by the same name that differs in appearence.

      The idea of this AA fix is that it ADDS consistency, it doesn’t remove it. If you know of a browser/OS combination where adding font-smoothing in this way has a detrimental effect then please share your information.

  7. David hi,
    I’m experience the same problem with images in other browsers except for chrome, my images are great in chrome (bkz:logo) but in ie or firefox my problem is like font problem that you’re talking about, do u have any idea or experience to fix it, ha ?

    Thanks for this great sharing.

    • Not as yet, I don’t. Though Luis mentioned that lossy image compression may be at work in created my problem. Would you reply here if you have any insights?

  8. Michael

    When you say “without smoothing” do you mean “with font smoothing turned off” or “without setting the font smoothing property?” When you don’t set the font-smoothing property, that doesn’t mean font smoothing is off. It lets the browser decide what is best, and it usually uses sub-pixel antialiasing. If you hard-code a value, it’s important to test a wide variety of operating systems and pixel densities, as you could be making things much worse for people who happen to be using a setup that isn’t exactly the same as yours.

    • dhwang

      Actually default is subpixel-antialiased, so antialiased is still applied even when you’re not specifying this. It’s just different scheme and subpixel-antialiased produces thicker looking font.

  9. Maybe it’s my eyes but I don’t see any difference in Chrome on my Ubuntu box.

  10. Flip

    I. LOVE. YOU. I am a graphic designer who develops websites for about a year now and always had trouble with the firefox displaying fonts too strong. This safed my life and makes my websites look as they alway should look like. Thanks a lot dude. You are awesome!

  11. Hi, David,

    Thank you for a great post on font smoothing.

    I go to add it in CSS and my editor tells me it expects a Function or Ident after the colon. Would you happen to know the Function or Ident, or how I can edit the snippet you provide to use in my site? I want to make sure it will work without producing errors.

    And, thank you again for your insights!

    Best,
    David Geer

  12. One day I’ll stop search “webfont smoothing” in my search engine to click on this page and copy-paste those two lines of CSS… one day

    I can’t remember how much I’ve done that, but definitely way too much for not make it worth memorize it. But no, every-time is never the right time to learn it so I guess see you later here, my future self

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!