Some feature requests/improvement suggestions for the JavaFX Font API
David Alayachew
davidalayachew at gmail.com
Sun Nov 30 15:20:43 UTC 2025
I haven't interacted with the API enough to run into the pain points you
have described. For example, a vast majority of my apps just stick to using
the out-of-the-box fonts. I'm sure what you are saying is a real issue, and
it's not so much that nobody cares. I just don't think many people have run
into this.
Also, a lot of what you are taking issue with is unintuitive behaviour, but
behaviour that does work. That also lowers the priority of this.
On Fri, Nov 28, 2025, 10:18 AM Glavo <zjx001202 at gmail.com> wrote:
> Does anyone care about these issues?
>
> Glavo
>
> On Mon, Jul 21, 2025 at 2:29 AM Glavo <zjx001202 at gmail.com> wrote:
>
>> Hi,
>>
>> We noticed that the Font API had many bugs and inconsistencies, and was
>> missing a lot of functionality.
>> Unfortunately, I don't have enough knowledge in this field to solve them.
>> So I'm making some feature requests/improvement suggestions on this to
>> see if anyone is interested.
>>
>> 1. Unify the meaning of "font family".
>>
>> Currently "font family" has different meanings on different platforms:
>>
>> - On Windows, it usually means the localized name of the font family
>> name (nameID=1);
>> - On Linux, it usually means the non-localized font family name
>> (nameID=1, langID=0x0);
>> - On macOS, it usually means the non-localized typographical family
>> name (nameID=16, langID=0x0).
>>
>> This inconsistency makes the behavior of the program confusing and it is
>> impossible to know what will happen without testing on multiple platforms.
>>
>> I want JavaFX to use the non-localized typographical family name
>> (nameID=16, langID=0x0) on all platforms.
>> The reason is that the font family name (nameID=1) of many fonts actually
>> contains the font style information,
>> and using it makes it difficult for us to select font style.
>>
>> For example, if we want to get JetBrains Mono Bold on Windows, we need to
>> use Font.font("JetBrains Mono", FontWeight.BOLD, 13),
>> but to get JetBrains Mono ExtraBold, we need to use Font.font("JetBrains
>> Mono ExtraBold", FontWeight.NORMAL, 13).
>> This is really frustrating :(
>>
>> Additionally, I encountered a bug on macOS that prevented me from
>> selecting the font weight.
>> I explained this issue in a previous email:
>> https://mail.openjdk.org/pipermail/openjfx-dev/2025-July/055417.html
>>
>> 2. Make Font.font(String) accept both font name and font family name.
>>
>> I wish Font.font(String) could accept more names than just the font
>> family name.
>>
>> As mentioned in the previous section, the current concept of font family
>> names in JavaFX is confusing and often contains font style information.
>> Therefore, it is very difficult to use the Font.font(String) in the
>> correct way.
>> If it would accept a variety of font names, both localized and
>> non-localized, it would be less difficult to use.
>>
>> 3. Add more methods to get font localized names
>>
>> I would like to get these methods in Font class to get the localized
>> name of the font:
>>
>> - static Map<Locale, String> getLocalizedFamilyNames(String family)
>> - static String getLocalizedFamilyName(String family, Locale locale)
>> - static String getLocalizedFontNames(Locale locale)
>> - static String getLocalizedFontNames(String family, Locale locale)
>> - Map<Locale, String> getLocalizedNames()
>> - String getLocalizedName(Locale locale)
>> - Map<Locale, String> getLocalizedFamily()
>> - String getLocalizedFamily(Locale locale)
>>
>> 4. More methods for handling font styles
>>
>> Right now we can only use FontWeight and FontPosture to select a font
>> style when looking up a font,
>> but the only way to get the style from a given Font object is
>> Font::getStyle(), which is very asymmetrical.
>>
>> I would like to get these methods to handle font styles:
>>
>> - static List<String> getStyles(String family)
>> - static Font font(String family, String style)
>> - FontWeight getWeight()
>> - FontPosture getPosture()
>>
>> 5. Support fallback fonts and CSS font list for UI controls
>> 6. Provides a way to control the typographic features of fonts
>> Refer to Flutter's FontFeature class:
>> https://api.flutter.dev/flutter/dart-ui/FontFeature-class.html
>>
>> Glavo
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20251130/6a443b5c/attachment.htm>
More information about the openjfx-dev
mailing list