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