Why do Glyphs fonts seem to have so much space above the letters?

Fonts I create in Glyphs seem to have a body that extends farther above the letters compared to Fontlab, even when the vertical metrics are the same. The image below is of the same letter in two fonts with equal PS and TrueType vertical metrics. On the left I used Glyphs, on the right I used Fontlab. Why does the font created in Glyphs have so much more space above?

The way the metrics are written to the font file differs a bit. There are several different places in a font that store vertical metrics. The way they are calculated differ between FontLab and Glyph. You can overwrite the automatic values in the instances Custom Parameters.

The positioning of the FontLab example is actually a bit high as there is no room for accents. So it should be something in between.

In FontLab, I used to set the Vertical Metrics myself. There are basically two different philosophies as to how to set the (Mac specific) hhea values:

a. ‘Microsoft method’:
hhea Ascender = WinAscent
hhea Descender = -WinDescent
hhea Linegap = 0

Advantages:

  • better synchronization of font display between Win and Mac apps
  • accents are not cut off in Mac apps because WinAscent tends to be higher than OS/2 TypoAscender
    Disadvantage:
  • differences between Mac apps and layout apps (XPress, InDesign)

b. ‘Adobe method’:
hhea Ascender = OS/2 TypoAscender
hhea Descender = OS/2 TypoDescender
hhea Linegap = WinAscent + WinDescent - UPM size

Advantage:

  • better synchronization of font display between Mac apps and layout apps (XPress, InDesign)
    Disadvantage:
  • differences between Mac and Win display
  • accents on caps are probably cut off in Mac apps

Layout apps like InDesign and XPress only ever use the OS/2 values for determining vertical positioning. Keep in mind that OS/2 TypoAscender plus |OS/2 TypoDescender| should add up to the UPM size. This very constraint is what’s causing all the problems.

Whatever is outside the WinAscent/WinDescent area is likely to be cut off by a Windows renderer. So it’s a good idea to take over the WinAscent and WinDescent values from the Font BBox, or at least the combined Bounding Box of all glyphs you want fully displayed under all circumstances.

Also keep in mind that WinDescent is a positive value while OS/2 TypoDescender and hhea Descender both are negative.

Hope this helps.

In case anyone wants to delve into the subject more deeply, here’s an extensive Typophile thread on this:
http://typophile.com/node/13081