I have a 40 pixel font that I'm trying to translate into custom images. I'm trying to match the size of the image exactly, but I'm having some problems getting exactly the right size. Basically, what it comes down to is this. When a font says it is X pixels, what does this physically mean?

  • in font we have a terminology of x height, are you talking about the same?? – Jack Oct 8 '11 at 5:09
  • 5
    If you are typing a document, a font size 12 is typically used. What does the 12 mean? – PearsonArtPhoto Oct 8 '11 at 13:45
  • 12 = 12pt type (typically) – DA01 Oct 11 '11 at 0:17
  • have a look at w3.org/Style/Examples/007/units.en.html#font-size – Jack Oct 11 '11 at 4:57

This is an excellent question, which has a rather unsatisfactory answer.

The size of type, whether specified in pixels, points (1/72") or millimetres, is the height of an em-square, an invisible box which is typically a bit larger than the distance from the tallest ascender to the lowest descender.

Given this is a somewhat arbitrary measure which

  • is dependent on the exact technical design of the font
  • can't be precisely measured from a printed or rasterized sample

it's not very meaningful or useful, other than as an approximation.

In your case, work out what size you need to specify in Photoshop to match the browser's rendering by experimentation. You should find this to be a constant ratio for any font, but I wouldn't expect this to be the case if you change browser or OS.

| improve this answer | |

ASCII Time! Pretend the two boxes below are pieces of lead type from 1900 or so. Back then, typefaces were cast in lead (or routed in wood). For the type to be set into a printing lock-up, they had to be connected to solid blocks. This is where the dimension of the type (in points) comes from:

+--------------+  +-------------+  <----+
|              |  |             |       |
|      XX      |  |             |       |
|     X  X     |  |             |       |
|    XX  XX    |  |             |       |
|    XX  XX    |  |     X       |
|    XXXXXX    |  |    X X      |   Point size of the type
|   XX    XX   |  |    XXX      |
|   XX    XX   |  |   X   X     |       |
|  XX      XX  |  |   X   X     |       |
|  XX      XX  |  |             |       |
|              |  |             |       |
+--------------+  +-------------+  <----+

Note the two letters above are different sizes, but their bounding box is the same. As such, in terms of points, both of those fonts are the same size.

Nowadays, we don't make much type in lead and wood and most of it is digital. However, the concept of the point sizing still exists in that there is a virtual box that is the same height for every letter that the type is placed on. Again, it's this virtual box that defines the point size rather than the physical measurements of the letterforms themselves. The actual size of the letterforms are often smaller than the point size (but can also be larger as well).

Measuring type in pixels doesn't work because of that, however, you can 'set' type in pixels in CSS and the like. The browser does a translation as best it can between the px size declared. But it's always a fuzzy estimation.

Ultimately, there's no accurate way to get two typefaces letterforms exactly the same size short of looking at them visually and changing the size of each until you see them as being the same size.

| improve this answer | |
  • In your computer you calculate Points to Pixels like this PX = Points * SystemDPI / 72. DPI in a video world (monitor) is a pure arbitrary value introduced by Apple in 1984. Video devices use only pixels; DPI doesn't exist in video/image world. Modern fonts is based on this concept where 1 point, 1/72 is defined as 1/72 of an inch. – user7179 Nov 1 '12 at 21:37
  • 5
    @AbdiasSoftware Yes, 1 point has been averaged to 1/72 of an inch and the first Mac had a 72 ppi screen. But not sure what that has to do with the question asked or the answer I gave. The fact remains that fonts, be them digital or analog, have a bounding box and that bounding box is what the size is referring to. – DA01 Nov 1 '12 at 21:51

The "font size" of a font refers to the font's "em height", which isn't necessarily the same as the height of particular characters in the font.

Usually the em height of a font adheres to the same basic idea - it'll be roughly set to the distance from the lowest descender (such as the bottom of the letter g) to the highest ascender (such as the top of the letter h):

As you can see, none of the individual letters cover that whole span.

With digital fonts, the "em height" of a font is a choice made by the font designer, and does not have to conform to this convention at all: a digital type designer can pick any foundation for their em size. However, fonts still tend to adhere, at least roughly, to the sort of convention described above. In old days when type consisted of metal blocks, the "em height" was the height of one of those blocks, which needed to be high enough not only for any character in that typeface but also for any ascenders, descenders, and accents.

Now, many modern typefaces include accents on capital letters too (such as Ć) - these accents extend outside the traditional typographical ascender and thus these (and possibly other special characters) fall outside the top of the "em". For historical reasons we don't adjust the em size to allow these, we keep the em size and just have these extend out of it - any typographer using such accents will need to ensure there is space for them to extend into, though usually the line gap is adequate in body text.

The line gap in body text is a space left between the descender of one line of text and the ascender of the line below it - that is, the "font size" does not include this line gap measurement. It can be influenced by the CSS field line-height, where 1.4 means that the line gap is 0.4 times the em height, and thus an entire line of body text will take up 1.4 times the em height including the line gap. In other applications the line gap can be specified differently: word processors often specify in terms of a multiple of "single" line spacing, but unlike in CSS, usually "single" spacing does not mean no line gap, but some "default" line gap, where the application tries to come up with a default based on metadata in the font file. There are multiple standards for specifying metrics in the font (eg in Truetype, there are different Mac and Windows/OS2 standards) so the default line gap can vary between applications and operating systems.

Now, even if a designer does follow a predictable convention for their em height, this still doesn't tell you the size of capital letters (cap-height) or the size of say an o (x-height or midline) as these can vary freely between typefaces in relation to the ascender height. Within a font family, these will usually be consistent though. So for example, Times New Roman Bold and Times New Roman Regular will have the same character sizes for the same em size, which should include ascenders, descenders, cap-height and x-height.

| improve this answer | |
  • 2
    Yes - there are conventions (such as em being from bottom of 'g' to top of 'h') but there is still variance, and font formats do not hold designers to these conventions at all. – thomasrutter Nov 2 '12 at 7:36

Try typing in the vertical bar character ('|') and measure that. If I duplicated your situation correctly and your antialiasing isn't blurring it too much, it should be 22px.

22px represents the height of the block of type. But each character fills the block differently. A 'g' or 'q' will occupy the lower region of that 22px, while capital letters and lowercase letters like 'b' or 'd' will occupy the upper portions. '|' is one of the only (if not the only) character that will entirely fill the 22px space.

I don't know about how to compare to your CSS settings, but that explains how Photoshop interprets text height.

| improve this answer | |
  • 1
    Furthermore, you can set two fonts at the same size and you'll often see that the letterforms, themselves, are not. They simply have the same 'block' size. – DA01 Aug 10 '12 at 21:20
  • 3
    The pipe does not always fill the total space allotted. It's purely a preference by the type designer. It'll often match the top of the ascenders and bottom of the descenders, but even then, the space allotted for the characters can still be much larger. – DA01 Aug 14 '12 at 18:36
  • 2
    The vertical bar character is not always equal to the em size (eg "full height") of the font, no. In fact, usually it will be less. – thomasrutter Aug 15 '12 at 11:38
  • 2
    The vertical box-drawing characters should theoretically cover the entire em-height (and probably overlap it a small amount). But very few fonts include these characters. The normal vertical bar (|) will NOT usually equal the em size. It doesn't even do this in the Microsoft core fonts (Arial, Georgia etc). – thomasrutter Sep 7 '12 at 5:01
  • 2
    The vertical bar character doesn't fill the whole height. Accents for uppercase characters, e.g. "Á" are positioned higher. Compare yourself: "Á" "|" – znq Nov 1 '12 at 9:48

Are you sure your font is measured in pixels? Most of the time fonts are measured in points. A point is 1/72 of an inch. So a 40 pt font is 40/72" or 5/9" tall. The kicker is that that is the dimension from the top of the ascenders on tall letters to the bottom of the descenders on letters that hang below the baseline. That's why the x-height is sometimes used, as mentioned above. That is the height of the lower-case letters that don't stick up or down.

Either way, the measurements are never exact anyway, unfortunately. You'll just have to some measuring and figuring (and/or trial-and-error) to accomplish what you're trying.

| improve this answer | |
  • But points are only relevant to physical type (printed, carved, engraved etc). – e100 Oct 10 '11 at 11:38
  • Not entirely correct. Type isn't measured from top of the ascenders to the bottom of the descenders, but rather it's measured by a bounding box that may or may not correlate to the ascender/descender height. This goes back to the days of lead and wood type where type was put on a block. It was the height of this block that dictated what size the type was labeled as. As such, two fonts, both set at 12pt may be very different sizes compared to each other. (I won't get into that fact that 1pt doesn't traditionally = 1/72 of an inch... ;) – DA01 Oct 10 '11 at 19:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.