What is the difference between the different font smoothing levels on macOS?

In, macOS 10.14 and 10.15 (and in older versions), you can enable font smoothing and set the font smoothing strength on the command line. See this for reference. Key commands are

defaults write -g CGFontRenderingFontSmoothingDisabled -bool FALSE
defaults -currentHost write -globalDomain AppleFontSmoothing -int 3
// the "3" here represents strong font smoothing.

You can also set this using the TinkerTool app.

Personally I prefer the strong smoothing even on my retina Mac Book Pro. Could someone explain the technical details behind the three different levels of smoothing : light, medium, strong. I believe this works differently from freetype rendering because Mac prefers to maintain the original glyph shapes, which is a good thing! How is this font smoothing different from colored subpixel - in TinkerTool this is the Enforce the old style font smoothing if possible (colored sub-pixels option). I noticed that if you enable this option, fonts think out a bit and become more crisp but in some apps you can see the sharp pixel edges if you look very carefully.

I'm trying to get an overall understanding of the different font smoothing approaches in macOS.


Solution 1:

I think I've found the most reasonable explanation for how Font Smoothing works in macOS here.

Noting some of the good observations from that thread.

Sub-pixel rendering in Mojave (M) doesn't work the same way it does in High Sierra (HS). Specifically, in HS, gray base text most stays dark gray, with colored pixels get added around it when you enable sub-pixel rendering. In Mojave, much of the base text is changed from gray to other, lighter colors, thus reducing contrast. As much of Apple's menu text is gray rather than black, this effect reduces contrast throughout the OS.

In Mojave, font smoothing doesn't actually make the letters thicker (i.e., it doesn't darken more pixels). Rather, it makes the darkened pixels darker, thus giving the appearance of added thickness.

These observations should apply to macOS Catalina as well.