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 <[email protected]> wrote: > Does anyone care about these issues? > > Glavo > > On Mon, Jul 21, 2025 at 2:29 AM Glavo <[email protected]> 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 >> >
