diff --git a/flatlaf-theme-editor/build.gradle.kts b/flatlaf-theme-editor/build.gradle.kts index f44136d0..676db2a3 100644 --- a/flatlaf-theme-editor/build.gradle.kts +++ b/flatlaf-theme-editor/build.gradle.kts @@ -22,6 +22,8 @@ plugins { dependencies { implementation( project( ":flatlaf-core" ) ) implementation( project( ":flatlaf-extras" ) ) + implementation( project( ":flatlaf-fonts-inter" ) ) + implementation( project( ":flatlaf-fonts-jetbrains-mono" ) ) implementation( "com.miglayout:miglayout-swing:5.3" ) implementation( "com.fifesoft:rsyntaxtextarea:3.1.4" ) @@ -32,6 +34,8 @@ tasks { jar { dependsOn( ":flatlaf-core:jar" ) dependsOn( ":flatlaf-extras:jar" ) + dependsOn( ":flatlaf-fonts-inter:jar" ) + dependsOn( ":flatlaf-fonts-jetbrains-mono:jar" ) manifest { attributes( "Main-Class" to "com.formdev.flatlaf.themeeditor.FlatLafThemeEditor" ) diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java index 4bc60aba..199b3246 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java @@ -34,6 +34,7 @@ import javax.swing.JPanel; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.UIManager; +import javax.swing.text.StyleContext; import org.fife.ui.autocomplete.AutoCompletion; import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory; @@ -48,6 +49,7 @@ import org.fife.ui.rtextarea.Gutter; import org.fife.ui.rtextarea.RTextArea; import org.fife.ui.rtextarea.RTextScrollPane; import org.fife.ui.rtextarea.SearchContext; +import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont; import com.formdev.flatlaf.util.UIScale; /** @@ -128,8 +130,7 @@ class FlatThemeEditorPane } void updateTheme() { - Font defaultFont = RTextArea.getDefaultFont(); - Font font = defaultFont.deriveFont( (float) UIManager.getFont( "defaultFont" ).getSize() ); + Font font = createEditorFont( 0 ); textArea.setFont( font ); textArea.setBackground( UIManager.getColor( "FlatThemeEditorPane.background" ) ); @@ -161,14 +162,28 @@ class FlatThemeEditorPane } void updateFontSize( int sizeIncr ) { - Font defaultFont = RTextArea.getDefaultFont(); - Font font = defaultFont.deriveFont( (float) UIManager.getFont( "defaultFont" ).getSize() + sizeIncr ); + Font font = createEditorFont( sizeIncr ); textArea.setFont( font ); textArea.setSyntaxScheme( new FlatSyntaxScheme( font ) ); scrollPane.getGutter().setLineNumberFont( font ); } + private static Font createEditorFont( int sizeIncr ) { + int size = UIManager.getFont( "defaultFont" ).getSize() + sizeIncr; + StyleContext sc = StyleContext.getDefaultStyleContext(); + Font font = sc.getFont( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, size ); + if( isFallbackFont( font ) ) { + Font defaultFont = RTextArea.getDefaultFont(); + font = defaultFont.deriveFont( (float) size ); + } + return font; + } + + private static boolean isFallbackFont( Font font ) { + return Font.DIALOG.equalsIgnoreCase( font.getFamily() ); + } + void selected() { if( findReplaceVisible ) showFindReplaceBar( false ); diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java index 8ab22dbd..a0bcb100 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java @@ -63,6 +63,8 @@ import com.formdev.flatlaf.extras.FlatSVGIcon; import com.formdev.flatlaf.extras.FlatSVGUtils; import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; import com.formdev.flatlaf.extras.components.*; +import com.formdev.flatlaf.fonts.inter.FlatInterFont; +import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont; import com.formdev.flatlaf.icons.FlatClearIcon; import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.StringUtils; @@ -105,6 +107,10 @@ class FlatThemeFileEditor System.setProperty( "user.language", "en" ); SwingUtilities.invokeLater( () -> { + if( SystemInfo.isJava_11_orLater ) + FlatInterFont.install(); + FlatJetBrainsMonoFont.install(); + FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" ); try {