The crisp fonts saga

John Neffenger john at status6.com
Thu Dec 14 06:15:09 UTC 2023


On 12/13/23 3:29 AM, Mark Raynsford wrote:
> I would love to live in a world where everyone has such a high
> resolution display that we can turn off AA entirely, but we don't live
> in that one yet.

Anti-aliasing is still widely in use, but the various operating systems 
and application frameworks have diverged in their policies on hinting 
and sub-pixel rendering.

I find it helps to get the bigger picture. Below are the various camps 
as I've come to understand them over the years.

Full hinting and sub-pixel rendering:
   - Microsoft Windows
   - Java Swing

Slight hinting and sub-pixel rendering:
   - Ubuntu for sure
   - probably Debian, Fedora, Red Hat, and others, too

No hinting, but with sub-pixel rendering:
   - JavaFX

No hinting, and also no sub-pixel rendering:
   - Apple macOS (uses traditional grayscale anti-aliasing)

I think that's why historically Windows users thought macOS (and JavaFX) 
fonts were too "blurry," and macOS users thought Windows fonts were too 
"jagged." It all depended on what you were used to.

In my opinion, Linux distributions like Ubuntu got it right by going 
with "slight" hinting by default (FT_LOAD_TARGET_LIGHT). Even the 
Freetype developers think that's the right choice. Their reasons are 
given in this rather technical article, with an excerpt below:

On Slight Hinting, Proper Text Rendering, Stem Darkening and LCD Filters
https://freetype.org/freetype2/docs/hinting/text-rendering-general.html

     "I also hope this change will make it easier for the 
non-Windows-and-Apple ecosystem to switch over to slight hinting as the 
default. Current full/medium native hinting, as is the default, tends to 
bring out the worst in many, many fonts that haven’t seen the same 
insane dedication to on-screen display and hinting as many popular 
Microsoft fonts, for example. And since ClearType is still not fully 
supported, you usually get a very poor default experience. Slight 
hinting gives a much better one, as Ubuntu has proven over the years."

> Can you give an example of UIs scaling unevenly, or animations looking
> jerky? All other non-JavaFX UI applications on my system evidently use
> hinting, and I don't see anything recognizable there.

There are some text animations in JavaFX that you won't see in most user 
interfaces: think text rotations, not stock tickers. It's difficult to 
keep text aligned to the pixel grid when the grid is rotating.

I would love to hear the full history of this choice in JavaFX. I agree 
that no hinting is a good choice now, but it was brave all those years 
ago when most people were on fully-hinted Windows. Did it really come 
down to its detrimental effect on animated text?

John



More information about the openjfx-dev mailing list