Italic Sidebearing Values Discrepancy

Can someone explain how these values are calculated. For the glyph /l it shows a glyph width of 189 and sidebearing values of 54/54. But for the glyph /idotless with the same advanced width it shows values of 55/54. When I overlay the /l outline on top of the /idotless the vertical slanted lines match perfectly in sync on the grid where the x-height node aligns along the outline, so there’s no offset at all. And when the /l is overlaid the values of course read as 54/54.

So, I know they have the same advance width and because of how they align the same sidebearing value, but the fact that the values don’t exactly match and the /idotless is off by one unit on the left side is really irritating me.


The values are calculated by back-slanting the outline in the half x-height. Then the bounding box is measured. But because of the transformation, you pretty much always end up with fractional coordinates. Those are rounded to avoid noises. You can see the original values by setting the grid to zero. I suspect that the values are very close but happen to be right in the middle between two integer numbers and the rounding moves them apart.

Georg, appreciate it! That’s enough of an explanation for me to now know it’s due to the calculation process. I think I might stop using linked metrics (or only use through early stages of development) so it doesn’t force a particular value and throw off the spacing, even if it’s only a one unit increment. As long as I know the spacing is correct even if the values are inconsistent, that’s good enough for me.

If you need the width of the l and I to be the same, you can use a metrics key for the LSB and the width (and leave the RSB open)