Matrix quantifying in Fontlab

Hello, I'm new to the fontlab software. For the fresh typeface, I need to quantify the matrix. I'd like to change the line spacing in two consecutive lines of text. I have some doubts. 

1. How do I change the line spacing in Fontlab?
2. What is the Bbox top and Bbox bottom?
3. What is the safe top and safe bottom?
4. What exactly is caret offset?
5. Is it the same for FontLab 7 and 8?

Your advice would be really beneficial to me.


  • John Hudson
    John Hudson Posts: 3,017
    I recommend posting FL questions to the FontLab Forum (the FL8 forum is the most active, and since FL7 and FL8 are mostly very similar, I would ask in the FL8 forum even if you are using FL7).

    1. First see this TypeDrawers thread about vertical metrics (it starts with a discussion of multiscript fonts, but the basic principles about how to determine appropriate vertical metrics are general).

    You can control default linespacing using a couple of different vertical metrics models. In FontLab, the Ascender, Descender and Line gap metrics correspond to the OS/2 table ‘Typo’ metrics, and also to the corresponding hhea table metrics, although these should also be set in FontLab’s Other Values font info panel.

    2. The Bbox top and Bbox bottom values are informative. If you click the reload button to the right of them, they will display the height and depth of the tallest and deepest glyph outline in your font (the vertical bounding box or ‘Bbox’).

    3. When you know the height and depth of the tallest and deepest glyphs, you can then check whether your Safe Top and Safe Bottom values are large enough to encompass the vertical bounding box. ‘Safe’ in this case means that anything within these metrics will not get clipped; any part of a glyph beyond these metrics will get clipped in some situations (mostly on screen, less often in print). The Safe Top and Safe Bottom values correspond to the OS/2 table ‘Win’ metrics.

    4. Caret offset is primarily used when working on italic or oblique fonts and using slanted sidebearings in FontLab. You can set the caret offset to shift the slanted sidebearings horizontally relative to the outline. I do this relative to a measurement line optically about halfway up the x-height in a Latin font, such that the sidebearing-to-stem distance at that height is equal on both sides of a key letter like H.

    5. Yes.
  • Thomas Phinney
    Thomas Phinney Posts: 2,777
    edited March 2023
    Different apps handle line spacing differently.

    Mostly there are two approaches:

    1) typographically sophisticated apps add a specified amount to the point size. All you can do is determine how large your font is relative to the em square (point size), and the actual spacing is just based on the em square (point size) plus a standard amount such as 20%. Most drawing and page layout apps work this way.

    2) less fancy apps use the font metadata you are setting with the positions for "safe top" and "safe bottom" plus a standard percentage such as 20%, and call that “single spaced.” Then they double that line-to-line spacing for double-spaced! This is a bit weird because it means that at the same point size, what counts as single spaced varies between fonts! Most office apps such as Microsoft Word and Google Docs work this way.

    Bbox top and Bbox bottom are the top and bottom for the tallest and lowest glyph in your font. Often you will set safe top and safe bottom to these same coordinates. If you set the "safe" values closer to zero, then in some environments, glyphs exceeding safe top and safe bottom can be clipped. This is primarily a Windows issue, especially (but not only) for older apps.

    Caret offset is a horizontal shift for italics. After slanting the caret (cursor), how much should it shift to still be positioned correctly?

    Generally yes these are all the same thing for 7 and 8.