Feedback request: Add new RenderingHints.KEY_FONT_HINTING
Philip Race
philip.race at oracle.com
Mon Jul 15 19:22:20 UTC 2024
Platforms are tending towards AA+unhinted - this is all we can get from
macOS today so I'm not sure how well we could support this hint.
And being able to turn off hinting when doing modes such as B&W is
unlikely to produce good results on any font you'd want to use.
Have you looked at the existing VALUE_TEXT_ANTIALIAS_GASP hint ?
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/java/awt/RenderingHints.html#VALUE_TEXT_ANTIALIAS_GASP
it uses the OpenType table
https://learn.microsoft.com/en-us/typography/opentype/spec/gasp
which basically tells the rasteriser at a specific size which
combination of hinting and anti-aliasing to use.
If apps use together with the FM hint they should get most of what they
want.
Where JDK can (this means when we use freetype) you'd get FM PLUS the
appropriate AA PLUS the appropriate hinting choice
I think this is better than a hint where an app will have to guess,
probably wrongly.
-phil.
On 7/14/24 7:15 AM, Daniel Gredler wrote:
> Hi all,
>
> We've had a bit of back-and-forth regarding whether font hinting is
> enabled or disabled when drawing grayscale text with anti-aliasing and
> fractional metrics enabled [1, 2]. Setting AA + FM disabled font
> hinting in JDK 8 - 10, then JDK 11 changed this so that AA + FM would
> *not* disable hinting, and finally the behavior was reverted in JDK 14
> (and backported to JDK 11).
>
> Generalizing a bit, the current behavior (AA + FM disables hinting) is
> optimal for "the desktop use case" (JavaFX, animations, smooth
> scaling, etc). The JDK 11/12/13 behavior was optimal for "the backend
> use case" (individual image creation, no animations).
>
> I think it would be useful to have a new java.awt.RenderingHints key
> named RenderingHints.KEY_FONT_HINTING, with the following possible values:
> - RenderingHints.VALUE_FONT_HINTING_DEFAULT: current behavior,
> dictated by AA + FM
> - RenderingHints.VALUE_FONT_HINTING_ON: enable font hinting,
> regardless of AA + FM
> - RenderingHints.VALUE_FONT_HINTING_OFF: disable font hinting,
> regardless of AA + FM
>
> This new rendering hint would allow direct control over whether font
> hinting is enabled or not, and would specifically enable the use of AA
> + FM + font hints in Java.
>
> I'm happy to create a patch with this feature (I have a signed OCA on
> file), but wanted to get feedback on the idea first. Let me know what
> you think!
>
> Take care,
>
> Daniel
>
> [1] https://bugs.openjdk.org/browse/JDK-8214481
> [2] https://bugs.openjdk.org/browse/JDK-8242285
>
More information about the client-libs-dev
mailing list