65

The text is correctly displayed in Chrome. I want it to display this way in all browsers. How can I do this?

I was able to fix this in Safari with -webkit-font-smoothing: antialiased;

Chrome:
Chrome

Firefox:
Firefox

h1 {
    font-family: Georgia;
    font-weight: normal;
    font-size: 16pt;
    color: #444444;
    -webkit-font-smoothing: antialiased;
}
<h1>Hi, my name</h1>

And a JSFiddle: http://jsfiddle.net/jnxQ8/1/

TylerH
  • 20,799
  • 66
  • 75
  • 101
seymar
  • 3,993
  • 6
  • 25
  • 30
  • Generally speaking, the different browsers all handle their own text rendering. If you Google this, you will see a lot of results about browser rendering. Unless there is something quirky in your CSS, chance are you are at the mercy of the different rendering enginers for each associated browser. – Dutchie432 Feb 22 '11 at 19:07
  • 1
    It are screenshot's people. I solved it in Safari with `-webkit-font-smoothing: antialiased;` Now for firefox? – seymar Feb 22 '11 at 19:14
  • isnt that css3 ? font smothing ? – Val Feb 22 '11 at 19:17
  • Definitely the Webkit Font Smoothing declaration in Chrome. It only affects particular fonts, this site posted about it in 2010. http://ilikekillnerds.com/2010/12/a-solution-to-stop-font-face-fonts-looking-bold-on-mac-browsers/ – Dwayne Charrington Dec 01 '11 at 00:34

8 Answers8

52

Be sure the font is the same for all browsers. If it is the same font, then the problem has no solution using cross-browser CSS.

Because every browser has its own font rendering engine, they are all different. They can also differ in later versions, or across different OS's.

UPDATE: For those who do not understand the browser and OS font rendering differences, read this and this.

However, the difference is not even noticeable by most people, and users accept that. Forget pixel-perfect cross-browser design, unless you are:

  1. Trying to turn-off the subpixel rendering by CSS (not all browsers allow that and the text may be ugly...)
  2. Using images (resources are demanding and hard to maintain)
  3. Replacing Flash (need some programming and doesn't work on iOS)

UPDATE: I checked the example page. Tuning the kerning by text-rendering should help:

text-rendering: optimizeLegibility; 

More references here:

  1. Part of the font-rendering is controlled by font-smoothing (as mentioned) and another part is text-rendering. Tuning these properties may help as their default values are not the same across browsers.
  2. For Chrome, if this is still not displaying OK for you, try this text-shadow hack. It should improve your Chrome font rendering, especially in Windows. However, text-shadow will go mad under Windows XP. Be careful.
BCDeWitt
  • 4,540
  • 2
  • 21
  • 34
vincicat
  • 1,811
  • 1
  • 13
  • 13
  • 9
    I don't understand why Chrome and Safari render differently: they're both WebKit-based. – ChrisW Feb 22 '11 at 19:24
  • 1
    Yeah, but Chrome apparantly does automatically apply `-webkit-font-smoothing: antialiased;' and Safari doesn't? – seymar Feb 22 '11 at 19:26
  • 1
    chrome and safari is similar but not the same browser: they shared same base, webkit, but many platform-specific components and css modules are different - safari support more css3 property than chrome. And font-rendering is quite platform-specific. – vincicat Feb 22 '11 at 19:38
  • 1
    @ChrisW - Safari has it's own font rendering engine to give a similar experience as on OSX. Thus the '-webkit-font-smoothing' property will only appear to work on Safari (under Windows). And yet another variable is, you can modify the anti-aliasing in the browser Preferences. – Domokun Oct 19 '11 at 06:43
  • 2
    I actually had a problem on two different pages of the same site, with the same CSS applied, rendering different results. The ``font-smoothing: antialiased;`` worked wonders for me. – Kris Selbekk Aug 06 '15 at 08:54
  • I am still facing problem with Safari - too bold and chrome normal bold. Please give me proper solution. I am using Mac – Devangi Desai Jul 06 '17 at 04:37
19

In order to best standardise your @font-face embedded fonts across browsers try including the below inside your @font-face declaration or on your body font styling:

speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;

At present there looks to be no universal fix across all platforms and browser builds. As stated frequently all browsers/OS have different text rendering engines.

oneiota
  • 331
  • 3
  • 8
15

There's some great information about this here: https://bugzilla.mozilla.org/show_bug.cgi?id=857142

Still experimenting but so far a minimally invasive solution, aimed only at FF is:

body {
-moz-osx-font-smoothing: grayscale;
}
bobzIlla
  • 161
  • 1
  • 5
8

Try -webkit-font-smoothing: subpixel-antialiased;

ketan
  • 19,129
  • 42
  • 60
  • 98
6

I collected and tested discussed solutions:

Windows10 Prof x64:

* FireFox v.56.0 x32 
* Opera v.49.0
* Google Chrome v.61.0.3163.100 x64-bit

macOs X Serra v.10.12.6 Mac mini (Mid 2010):

* Safari v.10.1.2(12603.3.8)
* FireFox v.57.0 Quantum
* Opera v49.0

Semi (still micro fat in Safari) solved fatty fonts:

text-transform: none; // mac ff fix
-webkit-font-smoothing: antialiased; // safari mac nicer
-moz-osx-font-smoothing: grayscale; // fix fatty ff on mac

Have no visual effect

line-height: 1;
text-rendering: optimizeLegibility; 
speak: none;
font-style: normal;
font-variant: normal;

Wrong visual effect:

-webkit-font-smoothing: subpixel-antialiased !important; //more fatty in safari
text-rendering: geometricPrecision !important; //more fatty in safari

do not forget to set !important when testing or be sure that your style is not overridden

KEMBL
  • 536
  • 6
  • 10
3

I have many sites with this issue & finally found a fix to firefox fonts being thicker than chrome.

You need this line next to your -webkit fix -moz-osx-font-smoothing: grayscale;

body{
    text-rendering: optimizeLegibility;
   -webkit-font-smoothing: subpixel-antialiased;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
}
mateostabio
  • 958
  • 8
  • 11
0

I don't think using "points" for font-size on a screen is a good idea. Try using px or em on font-size.

From W3C:

Do not specify the font-size in pt, or other absolute length units. They render inconsistently across platforms and can't be resized by the User Agent (e.g browser).

Trevor
  • 55,264
  • 2
  • 18
  • 12
-2

Try text-rendering: geometricPrecision;.

Different from text-rendering: optimizeLegibility;, it takes care of kerning problems when scaling fonts, while the last enables kerning and ligatures.

Jorge
  • 1
  • 1