View Single Post
I'm using OmniGraffle Pro 4.2.1 (v129.15).

The Leading setting in the "Style: Text" inspector is hard to understand and seems to have inconsistent behaviour. I've done several experiments to figure out how it works; first I'll present what I've found, then suggest an improvement to OmniGraffle for your consideration.

Observations

I tried four different typefaces with various sizes and "Leading" settings in the "Style: Text" inspector, and measured the actual distance between baselines in each case.



Notice a few strange things about these results. In each case, the measured line height for a "Leading" setting of zero is a whole number of points that is slightly larger than the text size, but not a consistent percentage larger, and the exact amount depends on the typeface. In Lucida Grande all the line heights are a bit larger than the corresponding ones in Georgia, but strangely, for 18pt text Georgia has exactly the same line heights. So the relationship between typefaces isn't even linear: compared to Lucida Grande, Georgia is spaced tighter at small sizes, the same at medium sizes, and then tighter at large sizes again.

For Lucida Grande and Georgia, "Leading" settings greater than zero add to this "basic line height" that depends on the typeface and size; negative "Leading" settings have no effect. But for Times New Roman, positive "Leading" settings don't always increase the line height, and negative "Leading" settings sometimes decrease the line height. The same is true of Monaco.

Hypothesis

My best guess at what is going on here is that each combination of typeface and point size has three properties:
  • a "standard line height" slightly larger than the point size;
  • a "fixed range" over which the "Leading" setting has no effect;
  • a "leading floor" below which the "Leading" setting has no effect.
For any "Leading" setting within the fixed range, the line height is fixed at the standard line height. Increasing the "Leading" by 1, above the fixed range, increases the line height by 1. Decreasing the "Leading" by 1, below the fixed range, decreases the line height by 1, but only until the leading floor is reached; below the leading floor the line height cannot be further decreased.

These properties appear to be arbitrary and specific to each typeface. For example, in 18pt Lucida Grande, the standard line height is 21pt, the fixed range is 0 to 0, and the floor is 0. In 36pt Times New Roman, the standard line height is 42pt, the fixed range is 0 to 2, and the floor is -2.

Proposal

I hope you will agree with me that the current behaviour is unacceptably complicated and mysterious. It is hard to predict the actual line height that will result from a particular "Leading" setting, which makes it difficult to know how many lines of text will fit in a given area or to lay out text elements with consistent vertical spacing. There also doesn't seem to be any good reason why there should be an arbitrary lower limit on leading that varies from font to font.

My proposal for improving the situation is fairly simple: add a setting called "Line Height" to the inspector, that both displays and accepts the actual line height. And remove the restrictions on this value; allow users to enter any line height.

You can keep or remove the current "Leading" field. If you prefer to keep it, for users who are familiar with it or rely on its current behaviour, then changing the "Line Height" will change "Leading", and changing the "Leading" will change the "Line Height".