TT hinting: thick and thin horizontal stems in a serif design

Jasper de Waard
Jasper de Waard Posts: 639
edited November 2022 in Technique and Theory
Hi people,

I'm working on the hinting of a serif for long-form text. I'd like it to be very pleasantly readable on a Windows, so I'm investing some time into getting to know TT hinting. At the moment I'm using Glyphs but I'm okay with switching if necessary. The problem I'm facing at the moment is illustrated below.

Much like most transitional serifs, my design features thick and thin horizontal stems. At larger sizes, I would like that difference to be visible as the difference between e.g. 2-3, or 3-4 pixels. At smaller sizes however, the difference ends up being between 1 and 2 pixels, as in the example below. That difference is way too big.

Ideally, I would link both stems to hStem:thin at smaller point sizes, and switch to hStem:thick for the thick stem at larger sizes. However, this doesn't seem to be possible in TT hinting, at least not in Glyphs. Since I am surely not the first person to encounter this problem, what are your solutions? Is there some TT wizardry that I'm not aware of, or am I just going to have to limit myself to one horizontal stem thickness?

Edit: of course I could also use loads of deltas but that seems like a pretty inelegant solution. Or is it just the way it is?

Many thanks in advance,
Jasper


Comments

  • hi Jasper, what type of rendering environment are you targeting? Grid fit to full pixels is mostly useful for older GDI rendering, which is not used much anymore. I don't know enough about hinting in Glyphs to know what you can do, but if you want to do full pixel in VTT you can use inheritance to force the heavy weight to one pixel at smaller sizes. You might be better off if you just want the font to work well in DirectWrite rendering to use a lighter hinting style for the rounds, similar to how I describe the approach in the Hinting Variable fonts doc. 
  • Jasper de Waard
    Jasper de Waard Posts: 639
    edited November 2022
    Hi Mike, thanks for your answer!

    I tried not hinting to full pixels (in Glyphs this is done by setting the stem hint to 'no rounding'), which indeed is much much easier and looks acceptable. But then I compared it against Droid, Merriweather, and Georgia, and concluded that I much preferred crispness over accuracy (also on Windows 11). I'm really going for optimal legibility at ±16 px. This typeface is meant for scientific publishing, and scientists these days read mostly from screens on a Windows machine.

    This 'inheritance' sounds interesting (although don't really get it yet). I suppose it might be time for me to learn VTT...
  • Inheritance simply means forcing one cvt value to be equal to another until a desired ppem size, so it would be possible to force the heavier rounds to be equal to the lighter from 9 -16 for example. But yes learning VTT is another thing. : )