How do I disable text antialias (font smoothing) in Terminal and globally for all apps?

I'd like to disable every kind of text anti-aliasing and font smoothing globally in OS X.

With OS X 10.8 on a mid-2013 MacBook Air 13", I've tried quite a few options: the Turn off text smoothing for font sizesand smaller, which corresponds to AppleAntiAliasingThreshold in NSGlobalDomain, doesn't seem to cause any effect — I've tried setting it to 12 through the interface, and to 24 through defaults, to no effect.

defaults read | fgrep Smooth returns nothing, but manually setting AppleFontSmoothing -int 0 or AppleSmoothFixedFontsSizeThreshold -int 24, for NSGlobalDomain, as per https://stackoverflow.com/questions/11660895/disable-anti-aliasing-fonts-in-xcode-4-4-in-mountain-lion, doesn't seem to cause any effect, either.

For example, with Terminal, if I go to preferences, in Settings, Text, Text, there's an option Antialias text, and it's ticked, and there's no way to untick it, because the whole option is greyed out.

How do I completely disable antialias in Terminal and globally for all apps?


Solution 1:

defaults write -g AppleFontSmoothing -int 0 should just disable subpixel rendering, like unchecking "Use LCD font smoothing when available" from the General preference pane. It only has effect after you quit and reopen applications.

Terminal does allow disabling antialiasing for some fonts like Monaco, but not for others like Menlo:

iTerm 2 allows disabling anti-aliasing for all fonts.

The "Turn off text smoothing for font sizes ... and smaller" setting has always affected only a small part of all UI elements. On my 10.8 VM, it affects text views in TextEdit, web views in Safari, and the names of files in Finder. The setting was removed from System Preferences in 10.9. defaults write -g AppleSmoothFixedFontsSizeThreshold -int still works in 10.9, but it affects an even smaller subset of all UI elements.

If you think text looks too blurry or bold by default, you can change to a lighter text rendering style by running defaults write -g AppleFontSmoothing -int 1 and quitting and reopening applications. It doesn't disable antialiasing or subpixel rendering though.