In CSS, font sizes can be specified as "xx-small" through "xx-large", as "larger" or "smaller", as a percentage (e.g. 150%) or in any of the following relative units.
CSS font sizes can also be specified in any of the following absolute units:
Another messy area in CSS interpetation by web browsers.
I'd like to use ems so that viewers can choose a zoom factor but I'd like some control over the relative sizes (i.e. h1, h2 base sizes) and I'd like something that works consistently across Mac and PC without using ugly kludges that depend on specific bugs in browsers.
Many people say that "points" are for print stylesheets only. However, points are no different from inches or millimetres. Ideally, when I specify a font size of 72pt I should be able to go to any combination of Mac or PC, any phystical monitor size (15", 17", 21"), any resolution setting (640x480, 1024x768), and hold a ruler to the screen and measure the baseline spacing as 1". The fact that 72pt is not always 1" is a failing of the computer industry. the result is that point sizes only make sense when text is printed on paper.
The W3C recommend specifying font size in ems since most browsers allow the user to resize text sized in ems to suit their eyesight. This resize feature doesn't always work for units other than ems.
In CSS, ems is a factor applied to the "normal" size of text. Macs and PCs interpret ems differently (PC bigger) so a workaround is needed. For example, detect Mac (in client scripting or server-side scripting) and return a different stylesheet for Macs and PCs.
There are a lot of web pages that discuss this issue but this is one that makes most sense to me: Give Me Pixels or Give Me Death
Here's a page that shows the awful mess confronting web page authors: Master Compatibility Chart