Ttfautohint – a 99% automated font hinting process
freetype.org
freetype.org
That's why when I wanted to have a font that is hinted perfectly for one given size, I in the end had to resolve to baking the hinting distortions into the glyph outlines itself.
Here's my blog post where I explain the problem and my brute force solution a bit more. And you can download the font to see how distorted glyphs optimized for 16px will look at other sizes.
That said, the font editor that I used also automatically runs ttfautohint, so it really is the default tool to get the job done.
https://hajo.me/blog/2021/07/24/making-a-font-that-doesnt-su...
But one thing that I'm not sure you're aware of - is that you can get very good results without resorting to this.
The trick is basically to get Freetype to render the glyph with hinting enabled, but at increased horizontal resolution (eg 4x is enough). By stretching the glyph horizontally, you basically get rid of the vertical hinting. Because you're rendering for LCD sub-pixel display, you triple the 4x again, so you actually render horizontally at say 3*4 = 12x pixel width. This wipes out the effect of hinting horizontally, but preserves the vertical hinting, which gives you the best of both worlds. You get crisp horizontal edges, and the ability to place glyphs with sub-pixel precision on the X axis. Of course for mono-spaced fonts this doesn't matter, and for maximum crispness, you might as well just render LCD sub-pixel glyphs with full hinting, which gives results that looks similar to the example at the top of your page.
As screen resolutions rise, the need for hinting diminishes. On a 4K desktop monitor you still benefit from hinting. I think 8K desktop monitor resolution (at say 28 inch size) is probably where hinting loses relevance.
I don’t have a 4K desktop monitor but I was curious to see if it does anything with larger fonts. Trying it out with Open Sans and it does still give an increase in contrast on a 34px title font sample, but not as significant as on the smaller body text: https://cdn.knightlab.com/libs/juxtapose/latest/embed/index....