From 7c9987227867ea8a9a2e0bf178e3319f49742d3d Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 24 Nov 2021 10:37:48 +0100 Subject: [PATCH] Typography: - fixed semibold font on Ubuntu - use font "Montserrat SemiBold" on Fedora (PR #396) --- .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 14 ++++++++++++-- .../com/formdev/flatlaf/FlatLaf.properties | 2 +- .../com/formdev/flatlaf/testing/FlatFontsTest.java | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index eb137bd8..af3ef041 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -1324,9 +1324,19 @@ public abstract class FlatLaf } // derive font - if( newStyle != baseStyle || newSize != baseSize ) + if( newStyle != baseStyle || newSize != baseSize ) { + // hack for font "Ubuntu Medium" on Linux, which curiously belongs + // to family "Ubuntu Light" and using deriveFont() would create a light font + if( "Ubuntu Medium".equalsIgnoreCase( baseFont.getName() ) && + "Ubuntu Light".equalsIgnoreCase( baseFont.getFamily() ) ) + { + Font font = createCompositeFont( "Ubuntu Medium", newStyle, newSize ); + if( !isFallbackFont( font ) ) + return toUIResource( font ); + } + return toUIResource( baseFont.deriveFont( newStyle, newSize ) ); - else + } else return toUIResource( baseFont ); } diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index 002fd997..3392a4f9 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -58,7 +58,7 @@ mini.font = -3 [mac]semibold.font = "HelveticaNeue-Medium" # Linux [linux]light.font = "Lato Light", "Ubuntu Light", "Cantarell Light" -[linux]semibold.font = "Lato Semibold", "Ubuntu Medium" +[linux]semibold.font = "Lato Semibold", "Ubuntu Medium", "Montserrat SemiBold" # fallback for unknown platform light.font = +0 semibold.font = +0 diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatFontsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatFontsTest.java index fb751888..75c2b254 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatFontsTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatFontsTest.java @@ -86,6 +86,7 @@ public class FlatFontsTest for( Map.Entry e : info.fonts.entrySet() ) { JLabel label = new JLabel( e.getKey() ); label.setFont( e.getValue().deriveFont( (float) UIScale.scale( 36 ) ) ); + label.setToolTipText( e.getValue().toString() ); previewPanel.add( label, "wrap" ); }