mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 22:40:53 +03:00
Merge PR #615: Fonts: lazy loading
This commit is contained in:
@@ -78,6 +78,7 @@ import com.formdev.flatlaf.ui.FlatPopupFactory;
|
|||||||
import com.formdev.flatlaf.ui.FlatRootPaneUI;
|
import com.formdev.flatlaf.ui.FlatRootPaneUI;
|
||||||
import com.formdev.flatlaf.ui.FlatUIUtils;
|
import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||||
import com.formdev.flatlaf.ui.FlatStylingSupport.StyleableUI;
|
import com.formdev.flatlaf.ui.FlatStylingSupport.StyleableUI;
|
||||||
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import com.formdev.flatlaf.util.GrayFilter;
|
import com.formdev.flatlaf.util.GrayFilter;
|
||||||
import com.formdev.flatlaf.util.LoggingFacade;
|
import com.formdev.flatlaf.util.LoggingFacade;
|
||||||
import com.formdev.flatlaf.util.MultiResolutionImageSupport;
|
import com.formdev.flatlaf.util.MultiResolutionImageSupport;
|
||||||
@@ -663,6 +664,9 @@ public abstract class FlatLaf
|
|||||||
}
|
}
|
||||||
|
|
||||||
static FontUIResource createCompositeFont( String family, int style, int size ) {
|
static FontUIResource createCompositeFont( String family, int style, int size ) {
|
||||||
|
// load lazy font family
|
||||||
|
FontUtils.loadFontFamily( family );
|
||||||
|
|
||||||
// using StyleContext.getFont() here because it uses
|
// using StyleContext.getFont() here because it uses
|
||||||
// sun.font.FontUtilities.getCompositeFontUIResource()
|
// sun.font.FontUtilities.getCompositeFontUIResource()
|
||||||
// and creates a composite font that is able to display all Unicode characters
|
// and creates a composite font that is able to display all Unicode characters
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2022 FormDev Software GmbH
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.formdev.flatlaf.util;
|
||||||
|
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.FontFormatException;
|
||||||
|
import java.awt.GraphicsEnvironment;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.swing.plaf.UIResource;
|
||||||
|
import javax.swing.text.StyleContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility methods for fonts.
|
||||||
|
*
|
||||||
|
* @author Karl Tauber
|
||||||
|
* @since 3
|
||||||
|
*/
|
||||||
|
public class FontUtils
|
||||||
|
{
|
||||||
|
private static Map<String, Runnable> loadersMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a composite font for the given family, style and size.
|
||||||
|
* A composite font that is able to display all Unicode characters.
|
||||||
|
* The font family is loaded if necessary via {@link #loadFontFamily(String)}.
|
||||||
|
* <p>
|
||||||
|
* To get fonts derived from returned fonts, it is recommended to use one of the
|
||||||
|
* {@link Font#deriveFont} methods instead of invoking this method.
|
||||||
|
*/
|
||||||
|
public static Font getCompositeFont( String family, int style, int size ) {
|
||||||
|
loadFontFamily( family );
|
||||||
|
|
||||||
|
// using StyleContext.getFont() here because it uses
|
||||||
|
// sun.font.FontUtilities.getCompositeFontUIResource()
|
||||||
|
// and creates a composite font that is able to display all Unicode characters
|
||||||
|
Font font = StyleContext.getDefaultStyleContext().getFont( family, style, size );
|
||||||
|
|
||||||
|
// always return non-UIResource font to avoid side effects when using font
|
||||||
|
// because Swing uninstalls UIResource fonts when switching L&F
|
||||||
|
// (StyleContext.getFont() may return a UIResource)
|
||||||
|
if( font instanceof UIResource )
|
||||||
|
font = font.deriveFont( font.getStyle() );
|
||||||
|
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a font family for lazy loading via {@link #loadFontFamily(String)}.
|
||||||
|
* <p>
|
||||||
|
* The given runnable is invoked when the given font family should be loaded.
|
||||||
|
* The runnable should invoke {@link #installFont(URL)} to load and register font(s)
|
||||||
|
* for the family.
|
||||||
|
* A family may consist of up to four font files for the supported font styles:
|
||||||
|
* regular (plain), italic, bold and bold-italic.
|
||||||
|
*/
|
||||||
|
public static void registerFontFamilyLoader( String family, Runnable loader ) {
|
||||||
|
if( loadersMap == null )
|
||||||
|
loadersMap = new HashMap<>();
|
||||||
|
loadersMap.put( family, loader );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a font family previously registered via {@link #registerFontFamilyLoader(String, Runnable)}.
|
||||||
|
* If the family is already loaded or no londer is registered for that family, nothing happens.
|
||||||
|
*/
|
||||||
|
public static void loadFontFamily( String family ) {
|
||||||
|
if( !hasLoaders() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
Runnable loader = loadersMap.remove( family );
|
||||||
|
if( loader != null )
|
||||||
|
loader.run();
|
||||||
|
|
||||||
|
if( loadersMap.isEmpty() )
|
||||||
|
loadersMap = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a font file from the given url and registers it in the graphics environment.
|
||||||
|
* Uses {@link Font#createFont(int, InputStream)} and {@link GraphicsEnvironment#registerFont(Font)}.
|
||||||
|
*/
|
||||||
|
public static boolean installFont( URL url ) {
|
||||||
|
try( InputStream in = url.openStream() ) {
|
||||||
|
Font font = Font.createFont( Font.TRUETYPE_FONT, in );
|
||||||
|
return GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont( font );
|
||||||
|
} catch( FontFormatException | IOException ex ) {
|
||||||
|
LoggingFacade.INSTANCE.logSevere( "FlatLaf: Failed to install font " + url, ex );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all font familiy names available in the graphics environment.
|
||||||
|
* This invokes {@link GraphicsEnvironment#getAvailableFontFamilyNames()} and
|
||||||
|
* appends families registered for lazy loading via {@link #registerFontFamilyLoader(String, Runnable)}
|
||||||
|
* to the result.
|
||||||
|
*/
|
||||||
|
public static String[] getAvailableFontFamilyNames() {
|
||||||
|
String[] availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
|
||||||
|
if( !hasLoaders() )
|
||||||
|
return availableFontFamilyNames;
|
||||||
|
|
||||||
|
// append families that are not yet loaded
|
||||||
|
ArrayList<String> result = new ArrayList<>( availableFontFamilyNames.length + loadersMap.size() );
|
||||||
|
for( String name : availableFontFamilyNames )
|
||||||
|
result.add( name );
|
||||||
|
for( String name : loadersMap.keySet() ) {
|
||||||
|
if( !result.contains( name ) )
|
||||||
|
result.add( name );
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toArray( new String[result.size()] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all fonts available in the graphics environment.
|
||||||
|
* This first loads all families registered for lazy loading via {@link #registerFontFamilyLoader(String, Runnable)}
|
||||||
|
* and then invokes {@link GraphicsEnvironment#getAllFonts()}.
|
||||||
|
*/
|
||||||
|
public static Font[] getAllFonts() {
|
||||||
|
if( hasLoaders() ) {
|
||||||
|
// load all registered families
|
||||||
|
String[] families = loadersMap.keySet().toArray( new String[loadersMap.size()] );
|
||||||
|
for( String family : families )
|
||||||
|
loadFontFamily( family );
|
||||||
|
}
|
||||||
|
|
||||||
|
return GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean hasLoaders() {
|
||||||
|
return loadersMap != null && !loadersMap.isEmpty();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ dependencies {
|
|||||||
implementation( project( ":flatlaf-core" ) )
|
implementation( project( ":flatlaf-core" ) )
|
||||||
implementation( project( ":flatlaf-extras" ) )
|
implementation( project( ":flatlaf-extras" ) )
|
||||||
implementation( project( ":flatlaf-fonts-inter" ) )
|
implementation( project( ":flatlaf-fonts-inter" ) )
|
||||||
|
implementation( project( ":flatlaf-fonts-jetbrains-mono" ) )
|
||||||
implementation( project( ":flatlaf-fonts-roboto" ) )
|
implementation( project( ":flatlaf-fonts-roboto" ) )
|
||||||
implementation( project( ":flatlaf-intellij-themes" ) )
|
implementation( project( ":flatlaf-intellij-themes" ) )
|
||||||
implementation( "com.miglayout:miglayout-swing:5.3" )
|
implementation( "com.miglayout:miglayout-swing:5.3" )
|
||||||
@@ -35,6 +36,7 @@ tasks {
|
|||||||
dependsOn( ":flatlaf-core:jar" )
|
dependsOn( ":flatlaf-core:jar" )
|
||||||
dependsOn( ":flatlaf-extras:jar" )
|
dependsOn( ":flatlaf-extras:jar" )
|
||||||
dependsOn( ":flatlaf-fonts-inter:jar" )
|
dependsOn( ":flatlaf-fonts-inter:jar" )
|
||||||
|
dependsOn( ":flatlaf-fonts-jetbrains-mono:jar" )
|
||||||
dependsOn( ":flatlaf-fonts-roboto:jar" )
|
dependsOn( ":flatlaf-fonts-roboto:jar" )
|
||||||
dependsOn( ":flatlaf-intellij-themes:jar" )
|
dependsOn( ":flatlaf-intellij-themes:jar" )
|
||||||
// dependsOn( ":flatlaf-natives-jna:jar" )
|
// dependsOn( ":flatlaf-natives-jna:jar" )
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import java.util.Arrays;
|
|||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.text.DefaultEditorKit;
|
import javax.swing.text.DefaultEditorKit;
|
||||||
import javax.swing.text.StyleContext;
|
|
||||||
import com.formdev.flatlaf.FlatClientProperties;
|
import com.formdev.flatlaf.FlatClientProperties;
|
||||||
import com.formdev.flatlaf.FlatDarculaLaf;
|
import com.formdev.flatlaf.FlatDarculaLaf;
|
||||||
import com.formdev.flatlaf.FlatDarkLaf;
|
import com.formdev.flatlaf.FlatDarkLaf;
|
||||||
@@ -43,15 +42,13 @@ import com.formdev.flatlaf.extras.FlatSVGIcon;
|
|||||||
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
|
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
|
||||||
import com.formdev.flatlaf.extras.components.FlatButton;
|
import com.formdev.flatlaf.extras.components.FlatButton;
|
||||||
import com.formdev.flatlaf.extras.components.FlatButton.ButtonType;
|
import com.formdev.flatlaf.extras.components.FlatButton.ButtonType;
|
||||||
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
|
||||||
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
|
||||||
import com.formdev.flatlaf.icons.FlatAbstractIcon;
|
import com.formdev.flatlaf.icons.FlatAbstractIcon;
|
||||||
import com.formdev.flatlaf.themes.FlatMacDarkLaf;
|
import com.formdev.flatlaf.themes.FlatMacDarkLaf;
|
||||||
import com.formdev.flatlaf.themes.FlatMacLightLaf;
|
import com.formdev.flatlaf.themes.FlatMacLightLaf;
|
||||||
import com.formdev.flatlaf.extras.FlatSVGUtils;
|
import com.formdev.flatlaf.extras.FlatSVGUtils;
|
||||||
import com.formdev.flatlaf.ui.FlatUIUtils;
|
|
||||||
import com.formdev.flatlaf.ui.JBRCustomDecorations;
|
import com.formdev.flatlaf.ui.JBRCustomDecorations;
|
||||||
import com.formdev.flatlaf.util.ColorFunctions;
|
import com.formdev.flatlaf.util.ColorFunctions;
|
||||||
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import com.formdev.flatlaf.util.LoggingFacade;
|
import com.formdev.flatlaf.util.LoggingFacade;
|
||||||
import com.formdev.flatlaf.util.SystemInfo;
|
import com.formdev.flatlaf.util.SystemInfo;
|
||||||
import net.miginfocom.layout.ConstraintParser;
|
import net.miginfocom.layout.ConstraintParser;
|
||||||
@@ -66,15 +63,12 @@ class DemoFrame
|
|||||||
extends JFrame
|
extends JFrame
|
||||||
{
|
{
|
||||||
private final String[] availableFontFamilyNames;
|
private final String[] availableFontFamilyNames;
|
||||||
private boolean interFontInstalled;
|
|
||||||
private boolean robotoFontInstalled;
|
|
||||||
private int initialFontMenuItemCount = -1;
|
private int initialFontMenuItemCount = -1;
|
||||||
|
|
||||||
DemoFrame() {
|
DemoFrame() {
|
||||||
int tabIndex = DemoPrefs.getState().getInt( FlatLafDemo.KEY_TAB, 0 );
|
int tabIndex = DemoPrefs.getState().getInt( FlatLafDemo.KEY_TAB, 0 );
|
||||||
|
|
||||||
availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment()
|
availableFontFamilyNames = FontUtils.getAvailableFontFamilyNames().clone();
|
||||||
.getAvailableFontFamilyNames().clone();
|
|
||||||
Arrays.sort( availableFontFamilyNames );
|
Arrays.sort( availableFontFamilyNames );
|
||||||
|
|
||||||
initComponents();
|
initComponents();
|
||||||
@@ -284,24 +278,10 @@ class DemoFrame
|
|||||||
private void fontFamilyChanged( ActionEvent e ) {
|
private void fontFamilyChanged( ActionEvent e ) {
|
||||||
String fontFamily = e.getActionCommand();
|
String fontFamily = e.getActionCommand();
|
||||||
|
|
||||||
// install Inter font on demand
|
|
||||||
if( fontFamily.equals( FlatInterFont.FAMILY ) && !interFontInstalled ) {
|
|
||||||
FlatInterFont.install();
|
|
||||||
interFontInstalled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// install Roboto font on demand
|
|
||||||
if( fontFamily.equals( FlatRobotoFont.FAMILY ) && !robotoFontInstalled ) {
|
|
||||||
FlatRobotoFont.install();
|
|
||||||
robotoFontInstalled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
FlatAnimatedLafChange.showSnapshot();
|
FlatAnimatedLafChange.showSnapshot();
|
||||||
|
|
||||||
Font font = UIManager.getFont( "defaultFont" );
|
Font font = UIManager.getFont( "defaultFont" );
|
||||||
Font newFont = StyleContext.getDefaultStyleContext().getFont( fontFamily, font.getStyle(), font.getSize() );
|
Font newFont = FontUtils.getCompositeFont( fontFamily, font.getStyle(), font.getSize() );
|
||||||
// StyleContext.getFont() may return a UIResource, which would cause loosing user scale factor on Windows
|
|
||||||
newFont = FlatUIUtils.nonUIResource( newFont );
|
|
||||||
UIManager.put( "defaultFont", newFont );
|
UIManager.put( "defaultFont", newFont );
|
||||||
|
|
||||||
FlatLaf.updateUI();
|
FlatLaf.updateUI();
|
||||||
@@ -368,9 +348,7 @@ class DemoFrame
|
|||||||
|
|
||||||
ButtonGroup familiesGroup = new ButtonGroup();
|
ButtonGroup familiesGroup = new ButtonGroup();
|
||||||
for( String family : families ) {
|
for( String family : families ) {
|
||||||
if( Arrays.binarySearch( availableFontFamilyNames, family ) < 0 &&
|
if( Arrays.binarySearch( availableFontFamilyNames, family ) < 0 )
|
||||||
!family.equals( FlatInterFont.FAMILY ) &&
|
|
||||||
!family.equals( FlatRobotoFont.FAMILY ) )
|
|
||||||
continue; // not available
|
continue; // not available
|
||||||
|
|
||||||
JCheckBoxMenuItem item = new JCheckBoxMenuItem( family );
|
JCheckBoxMenuItem item = new JCheckBoxMenuItem( family );
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ import javax.swing.SwingUtilities;
|
|||||||
import com.formdev.flatlaf.FlatLaf;
|
import com.formdev.flatlaf.FlatLaf;
|
||||||
import com.formdev.flatlaf.extras.FlatInspector;
|
import com.formdev.flatlaf.extras.FlatInspector;
|
||||||
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
|
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
|
||||||
|
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
||||||
|
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||||
|
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
||||||
import com.formdev.flatlaf.util.SystemInfo;
|
import com.formdev.flatlaf.util.SystemInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,6 +71,24 @@ public class FlatLafDemo
|
|||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
DemoPrefs.init( PREFS_ROOT_PATH );
|
DemoPrefs.init( PREFS_ROOT_PATH );
|
||||||
|
|
||||||
|
// install fonts for lazy loading
|
||||||
|
FlatInterFont.installLazy();
|
||||||
|
FlatJetBrainsMonoFont.installLazy();
|
||||||
|
FlatRobotoFont.installLazy();
|
||||||
|
|
||||||
|
// use Inter font by default
|
||||||
|
// FlatLaf.setPreferredFontFamily( FlatInterFont.FAMILY );
|
||||||
|
// FlatLaf.setPreferredLightFontFamily( FlatInterFont.FAMILY_LIGHT );
|
||||||
|
// FlatLaf.setPreferredSemiboldFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
||||||
|
|
||||||
|
// use Roboto font by default
|
||||||
|
// FlatLaf.setPreferredFontFamily( FlatRobotoFont.FAMILY );
|
||||||
|
// FlatLaf.setPreferredLightFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
||||||
|
// FlatLaf.setPreferredSemiboldFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
||||||
|
|
||||||
|
// use JetBrains Mono font
|
||||||
|
// FlatLaf.setPreferredMonospacedFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
|
|
||||||
// application specific UI defaults
|
// application specific UI defaults
|
||||||
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.demo" );
|
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.demo" );
|
||||||
|
|
||||||
|
|||||||
@@ -18,18 +18,29 @@ License:
|
|||||||
How to install?
|
How to install?
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Invoke the `install()` method once (e.g. in your `main()` method; on AWT
|
Invoke following once (e.g. in your `main()` method; on AWT thread).
|
||||||
thread):
|
|
||||||
|
For lazy loading use:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FlatInterFont.installLazy();
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or load immediately with:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatInterFont.install();
|
FlatInterFont.install();
|
||||||
|
// or
|
||||||
|
FlatInterFont.installBasic();
|
||||||
|
FlatInterFont.installLight();
|
||||||
|
FlatInterFont.installSemiBold();
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
How to use?
|
How to use?
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Use as default font:
|
Use as application font (invoke before setting up FlatLaf):
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatLaf.setPreferredFontFamily( FlatInterFont.FAMILY );
|
FlatLaf.setPreferredFontFamily( FlatInterFont.FAMILY );
|
||||||
@@ -37,7 +48,7 @@ FlatLaf.setPreferredLightFontFamily( FlatInterFont.FAMILY_LIGHT );
|
|||||||
FlatLaf.setPreferredSemiboldFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
FlatLaf.setPreferredSemiboldFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Create fonts:
|
Create single fonts:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
// basic styles
|
// basic styles
|
||||||
@@ -55,6 +66,27 @@ new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
|||||||
new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
If using lazy loading, invoke one of following before creating the font:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatInterFont.FAMILY );
|
||||||
|
FontUtils.loadFontFamily( FlatInterFont.FAMILY_LIGHT );
|
||||||
|
FontUtils.loadFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
E.g.:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatInterFont.FAMILY );
|
||||||
|
Font font = new Font( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or use following:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
Font font = FontUtils.getCompositeFont( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
Download
|
Download
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -31,11 +31,17 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation( project( ":flatlaf-core" ) )
|
||||||
|
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
||||||
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flatlafModuleInfo {
|
||||||
|
dependsOn( ":flatlaf-core:jar" )
|
||||||
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
withJavadocJar()
|
withJavadocJar()
|
||||||
|
|||||||
@@ -16,11 +16,7 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.fonts.inter;
|
package com.formdev.flatlaf.fonts.inter;
|
||||||
|
|
||||||
import java.awt.Font;
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import java.awt.FontFormatException;
|
|
||||||
import java.awt.GraphicsEnvironment;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Inter font family.
|
* The Inter font family.
|
||||||
@@ -31,19 +27,30 @@ import java.io.InputStream;
|
|||||||
* Font home page: <a href="https://rsms.me/inter/">https://rsms.me/inter/</a><br>
|
* Font home page: <a href="https://rsms.me/inter/">https://rsms.me/inter/</a><br>
|
||||||
* GitHub project: <a href="https://github.com/rsms/inter">https://github.com/rsms/inter</a>
|
* GitHub project: <a href="https://github.com/rsms/inter">https://github.com/rsms/inter</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread):
|
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread).
|
||||||
|
* <p>
|
||||||
|
* For lazy loading use:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatInterFont.install();
|
* FlatInterFont.installLazy();
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Use as default font:
|
* Or load immediately with:
|
||||||
|
* <pre>{@code
|
||||||
|
* FlatInterFont.install();
|
||||||
|
* // or
|
||||||
|
* FlatInterFont.installBasic();
|
||||||
|
* FlatInterFont.installLight();
|
||||||
|
* FlatInterFont.installSemiBold();
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Use as application font (invoke before setting up FlatLaf):
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatLaf.setPreferredFontFamily( FlatInterFont.FAMILY );
|
* FlatLaf.setPreferredFontFamily( FlatInterFont.FAMILY );
|
||||||
* FlatLaf.setPreferredLightFontFamily( FlatInterFont.FAMILY_LIGHT );
|
* FlatLaf.setPreferredLightFontFamily( FlatInterFont.FAMILY_LIGHT );
|
||||||
* FlatLaf.setPreferredSemiboldFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
* FlatLaf.setPreferredSemiboldFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Create fonts:
|
* Create single fonts:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* new Font( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
* new Font( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
||||||
* new Font( FlatInterFont.FAMILY, Font.ITALIC, 12 );
|
* new Font( FlatInterFont.FAMILY, Font.ITALIC, 12 );
|
||||||
@@ -54,6 +61,24 @@ import java.io.InputStream;
|
|||||||
* new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
* new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
||||||
* new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
* new Font( FlatInterFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* If using lazy loading, invoke one of following before creating the font:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatInterFont.FAMILY );
|
||||||
|
* FontUtils.loadFontFamily( FlatInterFont.FAMILY_LIGHT );
|
||||||
|
* FontUtils.loadFontFamily( FlatInterFont.FAMILY_SEMIBOLD );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* E.g.:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatInterFont.FAMILY );
|
||||||
|
* Font font = new Font( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Or use following:
|
||||||
|
* <pre>{@code
|
||||||
|
* Font font = FontUtils.getCompositeFont( FlatInterFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
@@ -115,21 +140,61 @@ public class FlatInterFont
|
|||||||
|
|
||||||
private FlatInterFont() {}
|
private FlatInterFont() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers the fonts for lazy loading via {@link FontUtils#registerFontFamilyLoader(String, Runnable)}.
|
||||||
|
* <p>
|
||||||
|
* This is the preferred method (when using FlatLaf) to avoid unnecessary loading of maybe unused fonts.
|
||||||
|
* <p>
|
||||||
|
* <strong>Note</strong>: When using '{@code new Font(...)}', you need to first invoke
|
||||||
|
* {@link FontUtils#loadFontFamily(String)} to ensure that the font family is loaded.
|
||||||
|
* When FlatLaf loads a font, or when using {@link FontUtils#getCompositeFont(String, int, int)},
|
||||||
|
* this is done automatically.
|
||||||
|
*/
|
||||||
|
public static void installLazy() {
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY, FlatInterFont::installBasic );
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY_LIGHT, FlatInterFont::installLight );
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY_SEMIBOLD, FlatInterFont::installSemiBold );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates and registers the fonts for all styles.
|
* Creates and registers the fonts for all styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
*/
|
*/
|
||||||
public static void install() {
|
public static void install() {
|
||||||
// basic styles
|
installBasic();
|
||||||
|
installLight();
|
||||||
|
installSemiBold();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and registers the fonts for basic styles (regular, italic and bold).
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installBasic() {
|
||||||
installStyle( STYLE_REGULAR );
|
installStyle( STYLE_REGULAR );
|
||||||
installStyle( STYLE_ITALIC );
|
installStyle( STYLE_ITALIC );
|
||||||
installStyle( STYLE_BOLD );
|
installStyle( STYLE_BOLD );
|
||||||
installStyle( STYLE_BOLD_ITALIC );
|
installStyle( STYLE_BOLD_ITALIC );
|
||||||
|
}
|
||||||
|
|
||||||
// light
|
/**
|
||||||
|
* Creates and registers the fonts for light styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installLight() {
|
||||||
installStyle( STYLE_LIGHT );
|
installStyle( STYLE_LIGHT );
|
||||||
installStyle( STYLE_LIGHT_ITALIC );
|
installStyle( STYLE_LIGHT_ITALIC );
|
||||||
|
}
|
||||||
|
|
||||||
// semibold
|
/**
|
||||||
|
* Creates and registers the fonts for semibold styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installSemiBold() {
|
||||||
installStyle( STYLE_SEMIBOLD );
|
installStyle( STYLE_SEMIBOLD );
|
||||||
installStyle( STYLE_SEMIBOLD_ITALIC );
|
installStyle( STYLE_SEMIBOLD_ITALIC );
|
||||||
}
|
}
|
||||||
@@ -139,15 +204,6 @@ public class FlatInterFont
|
|||||||
* See {@code STYLE_} constants.
|
* See {@code STYLE_} constants.
|
||||||
*/
|
*/
|
||||||
public static boolean installStyle( String name ) {
|
public static boolean installStyle( String name ) {
|
||||||
try( InputStream in = FlatInterFont.class.getResourceAsStream( name ) ) {
|
return FontUtils.installFont( FlatInterFont.class.getResource( name ) );
|
||||||
Font font = Font.createFont( Font.TRUETYPE_FONT, in );
|
|
||||||
return GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont( font );
|
|
||||||
} catch( FontFormatException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
} catch( IOException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
module com.formdev.flatlaf.fonts.inter {
|
module com.formdev.flatlaf.fonts.inter {
|
||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
|
requires com.formdev.flatlaf;
|
||||||
|
|
||||||
exports com.formdev.flatlaf.fonts.inter;
|
exports com.formdev.flatlaf.fonts.inter;
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,15 @@ License:
|
|||||||
How to install?
|
How to install?
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Invoke the `install()` method once (e.g. in your `main()` method; on AWT
|
Invoke following once (e.g. in your `main()` method; on AWT thread).
|
||||||
thread):
|
|
||||||
|
For lazy loading use:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FlatJetBrainsMonoFont.installLazy();
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or load immediately with:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatJetBrainsMonoFont.install();
|
FlatJetBrainsMonoFont.install();
|
||||||
@@ -26,13 +33,13 @@ FlatJetBrainsMonoFont.install();
|
|||||||
How to use?
|
How to use?
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Use as default monospaced font:
|
Use as application monospaced font (invoke before setting up FlatLaf):
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatLaf.setPreferredMonospacedFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
FlatLaf.setPreferredMonospacedFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Create fonts:
|
Create single fonts:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
// basic styles
|
// basic styles
|
||||||
@@ -42,6 +49,25 @@ new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD, 12 );
|
|||||||
new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD | Font.ITALIC, 12 );
|
new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD | Font.ITALIC, 12 );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
If using lazy loading, invoke one of following before creating the font:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
E.g.:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
|
Font font = new Font( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or use following:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
Font font = FontUtils.getCompositeFont( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
Download
|
Download
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -31,11 +31,17 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation( project( ":flatlaf-core" ) )
|
||||||
|
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
||||||
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flatlafModuleInfo {
|
||||||
|
dependsOn( ":flatlaf-core:jar" )
|
||||||
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
withJavadocJar()
|
withJavadocJar()
|
||||||
|
|||||||
@@ -16,11 +16,7 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.fonts.jetbrains_mono;
|
package com.formdev.flatlaf.fonts.jetbrains_mono;
|
||||||
|
|
||||||
import java.awt.Font;
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import java.awt.FontFormatException;
|
|
||||||
import java.awt.GraphicsEnvironment;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The JetBrains Mono font family.
|
* The JetBrains Mono font family.
|
||||||
@@ -28,23 +24,46 @@ import java.io.InputStream;
|
|||||||
* Font home page: <a href="https://www.jetbrains.com/mono">https://www.jetbrains.com/mono</a><br>
|
* Font home page: <a href="https://www.jetbrains.com/mono">https://www.jetbrains.com/mono</a><br>
|
||||||
* GitHub project: <a href="https://github.com/JetBrains/JetBrainsMono">https://github.com/JetBrains/JetBrainsMono</a>
|
* GitHub project: <a href="https://github.com/JetBrains/JetBrainsMono">https://github.com/JetBrains/JetBrainsMono</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread):
|
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread).
|
||||||
|
* <p>
|
||||||
|
* For lazy loading use:
|
||||||
|
* <pre>{@code
|
||||||
|
* FlatJetBrainsMonoFont.installLazy();
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Or load immediately with:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatJetBrainsMonoFont.install();
|
* FlatJetBrainsMonoFont.install();
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Use as default monospaced font:
|
* Use as application monospaced font (invoke before setting up FlatLaf):
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatLaf.setPreferredMonospacedFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
* FlatLaf.setPreferredMonospacedFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Create fonts:
|
* Create single fonts:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.ITALIC, 12 );
|
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.ITALIC, 12 );
|
||||||
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD, 12 );
|
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD, 12 );
|
||||||
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD | Font.ITALIC, 12 );
|
* new Font( FlatJetBrainsMonoFont.FAMILY, Font.BOLD | Font.ITALIC, 12 );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* If using lazy loading, invoke following before creating the font:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* E.g.:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatJetBrainsMonoFont.FAMILY );
|
||||||
|
* Font font = new Font( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Or use following:
|
||||||
|
* <pre>{@code
|
||||||
|
* Font font = FontUtils.getCompositeFont( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
@@ -76,8 +95,24 @@ public class FlatJetBrainsMonoFont
|
|||||||
|
|
||||||
private FlatJetBrainsMonoFont() {}
|
private FlatJetBrainsMonoFont() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers the fonts for lazy loading via {@link FontUtils#registerFontFamilyLoader(String, Runnable)}.
|
||||||
|
* <p>
|
||||||
|
* This is the preferred method (when using FlatLaf) to avoid unnecessary loading of maybe unused fonts.
|
||||||
|
* <p>
|
||||||
|
* <strong>Note</strong>: When using '{@code new Font(...)}', you need to first invoke
|
||||||
|
* {@link FontUtils#loadFontFamily(String)} to ensure that the font family is loaded.
|
||||||
|
* When FlatLaf loads a font, or when using {@link FontUtils#getCompositeFont(String, int, int)},
|
||||||
|
* this is done automatically.
|
||||||
|
*/
|
||||||
|
public static void installLazy() {
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY, FlatJetBrainsMonoFont::install );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates and registers the fonts for all styles.
|
* Creates and registers the fonts for all styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
*/
|
*/
|
||||||
public static void install() {
|
public static void install() {
|
||||||
installStyle( STYLE_REGULAR );
|
installStyle( STYLE_REGULAR );
|
||||||
@@ -91,15 +126,6 @@ public class FlatJetBrainsMonoFont
|
|||||||
* See {@code STYLE_} constants.
|
* See {@code STYLE_} constants.
|
||||||
*/
|
*/
|
||||||
public static boolean installStyle( String name ) {
|
public static boolean installStyle( String name ) {
|
||||||
try( InputStream in = FlatJetBrainsMonoFont.class.getResourceAsStream( name ) ) {
|
return FontUtils.installFont( FlatJetBrainsMonoFont.class.getResource( name ) );
|
||||||
Font font = Font.createFont( Font.TRUETYPE_FONT, in );
|
|
||||||
return GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont( font );
|
|
||||||
} catch( FontFormatException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
} catch( IOException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
module com.formdev.flatlaf.fonts.jetbrains_mono {
|
module com.formdev.flatlaf.fonts.jetbrains_mono {
|
||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
|
requires com.formdev.flatlaf;
|
||||||
|
|
||||||
exports com.formdev.flatlaf.fonts.jetbrains_mono;
|
exports com.formdev.flatlaf.fonts.jetbrains_mono;
|
||||||
|
|
||||||
|
|||||||
@@ -15,18 +15,29 @@ License:
|
|||||||
How to install?
|
How to install?
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Invoke the `install()` method once (e.g. in your `main()` method; on AWT
|
Invoke following once (e.g. in your `main()` method; on AWT thread).
|
||||||
thread):
|
|
||||||
|
For lazy loading use:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FlatRobotoFont.installLazy();
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or load immediately with:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatRobotoFont.install();
|
FlatRobotoFont.install();
|
||||||
|
// or
|
||||||
|
FlatRobotoFont.installBasic();
|
||||||
|
FlatRobotoFont.installLight();
|
||||||
|
FlatRobotoFont.installSemiBold();
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
How to use?
|
How to use?
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Use as default font:
|
Use as application font (invoke before setting up FlatLaf):
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
FlatLaf.setPreferredFontFamily( FlatRobotoFont.FAMILY );
|
FlatLaf.setPreferredFontFamily( FlatRobotoFont.FAMILY );
|
||||||
@@ -34,7 +45,7 @@ FlatLaf.setPreferredLightFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
|||||||
FlatLaf.setPreferredSemiboldFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
FlatLaf.setPreferredSemiboldFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Create fonts:
|
Create single fonts:
|
||||||
|
|
||||||
~~~java
|
~~~java
|
||||||
// basic styles
|
// basic styles
|
||||||
@@ -52,6 +63,27 @@ new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
|||||||
new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
If using lazy loading, invoke one of following before creating the font:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatRobotoFont.FAMILY );
|
||||||
|
FontUtils.loadFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
||||||
|
FontUtils.loadFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
E.g.:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
FontUtils.loadFontFamily( FlatRobotoFont.FAMILY );
|
||||||
|
Font font = new Font( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Or use following:
|
||||||
|
|
||||||
|
~~~java
|
||||||
|
Font font = FontUtils.getCompositeFont( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
Download
|
Download
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -31,11 +31,17 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation( project( ":flatlaf-core" ) )
|
||||||
|
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-api:5.7.2" )
|
||||||
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
testImplementation( "org.junit.jupiter:junit-jupiter-params" )
|
||||||
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
testRuntimeOnly( "org.junit.jupiter:junit-jupiter-engine" )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flatlafModuleInfo {
|
||||||
|
dependsOn( ":flatlaf-core:jar" )
|
||||||
|
}
|
||||||
|
|
||||||
java {
|
java {
|
||||||
withSourcesJar()
|
withSourcesJar()
|
||||||
withJavadocJar()
|
withJavadocJar()
|
||||||
|
|||||||
@@ -16,11 +16,7 @@
|
|||||||
|
|
||||||
package com.formdev.flatlaf.fonts.roboto;
|
package com.formdev.flatlaf.fonts.roboto;
|
||||||
|
|
||||||
import java.awt.Font;
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import java.awt.FontFormatException;
|
|
||||||
import java.awt.GraphicsEnvironment;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Roboto font family.
|
* The Roboto font family.
|
||||||
@@ -28,19 +24,30 @@ import java.io.InputStream;
|
|||||||
* Font home page: <a href="https://fonts.google.com/specimen/Roboto">https://fonts.google.com/specimen/Roboto</a><br>
|
* Font home page: <a href="https://fonts.google.com/specimen/Roboto">https://fonts.google.com/specimen/Roboto</a><br>
|
||||||
* GitHub project: <a href="https://github.com/googlefonts/roboto">https://github.com/googlefonts/roboto</a>
|
* GitHub project: <a href="https://github.com/googlefonts/roboto">https://github.com/googlefonts/roboto</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread):
|
* To install the font, invoke following once (e.g. in your {@code main()} method; on AWT thread).
|
||||||
|
* <p>
|
||||||
|
* For lazy loading use:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatRobotoFont.install();
|
* FlatRobotoFont.installLazy();
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Use as default font:
|
* Or load immediately with:
|
||||||
|
* <pre>{@code
|
||||||
|
* FlatRobotoFont.install();
|
||||||
|
* // or
|
||||||
|
* FlatRobotoFont.installBasic();
|
||||||
|
* FlatRobotoFont.installLight();
|
||||||
|
* FlatRobotoFont.installSemiBold();
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Use as application font (invoke before setting up FlatLaf):
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* FlatLaf.setPreferredFontFamily( FlatRobotoFont.FAMILY );
|
* FlatLaf.setPreferredFontFamily( FlatRobotoFont.FAMILY );
|
||||||
* FlatLaf.setPreferredLightFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
* FlatLaf.setPreferredLightFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
||||||
* FlatLaf.setPreferredSemiboldFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
* FlatLaf.setPreferredSemiboldFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
* <p>
|
* <p>
|
||||||
* Create fonts:
|
* Create single fonts:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
* new Font( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
* new Font( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
* new Font( FlatRobotoFont.FAMILY, Font.ITALIC, 12 );
|
* new Font( FlatRobotoFont.FAMILY, Font.ITALIC, 12 );
|
||||||
@@ -51,6 +58,24 @@ import java.io.InputStream;
|
|||||||
* new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
* new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.PLAIN, 12 );
|
||||||
* new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
* new Font( FlatRobotoFont.FAMILY_SEMIBOLD, Font.ITALIC, 12 );
|
||||||
* }</pre>
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* If using lazy loading, invoke one of following before creating the font:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatRobotoFont.FAMILY );
|
||||||
|
* FontUtils.loadFontFamily( FlatRobotoFont.FAMILY_LIGHT );
|
||||||
|
* FontUtils.loadFontFamily( FlatRobotoFont.FAMILY_SEMIBOLD );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* E.g.:
|
||||||
|
* <pre>{@code
|
||||||
|
* FontUtils.loadFontFamily( FlatRobotoFont.FAMILY );
|
||||||
|
* Font font = new Font( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
|
* <p>
|
||||||
|
* Or use following:
|
||||||
|
* <pre>{@code
|
||||||
|
* Font font = FontUtils.getCompositeFont( FlatRobotoFont.FAMILY, Font.PLAIN, 12 );
|
||||||
|
* }</pre>
|
||||||
*
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
@@ -81,7 +106,7 @@ public class FlatRobotoFont
|
|||||||
public static final String FAMILY_LIGHT = "Roboto Light";
|
public static final String FAMILY_LIGHT = "Roboto Light";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Family name for semibold styles.
|
* Family name for semibold (medium) styles.
|
||||||
* <p>
|
* <p>
|
||||||
* Usage:
|
* Usage:
|
||||||
* <pre>{@code
|
* <pre>{@code
|
||||||
@@ -112,21 +137,61 @@ public class FlatRobotoFont
|
|||||||
|
|
||||||
private FlatRobotoFont() {}
|
private FlatRobotoFont() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers the fonts for lazy loading via {@link FontUtils#registerFontFamilyLoader(String, Runnable)}.
|
||||||
|
* <p>
|
||||||
|
* This is the preferred method (when using FlatLaf) to avoid unnecessary loading of maybe unused fonts.
|
||||||
|
* <p>
|
||||||
|
* <strong>Note</strong>: When using '{@code new Font(...)}', you need to first invoke
|
||||||
|
* {@link FontUtils#loadFontFamily(String)} to ensure that the font family is loaded.
|
||||||
|
* When FlatLaf loads a font, or when using {@link FontUtils#getCompositeFont(String, int, int)},
|
||||||
|
* this is done automatically.
|
||||||
|
*/
|
||||||
|
public static void installLazy() {
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY, FlatRobotoFont::installBasic );
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY_LIGHT, FlatRobotoFont::installLight );
|
||||||
|
FontUtils.registerFontFamilyLoader( FAMILY_SEMIBOLD, FlatRobotoFont::installSemiBold );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates and registers the fonts for all styles.
|
* Creates and registers the fonts for all styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
*/
|
*/
|
||||||
public static void install() {
|
public static void install() {
|
||||||
// basic styles
|
installBasic();
|
||||||
|
installLight();
|
||||||
|
installSemiBold();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and registers the fonts for basic styles (regular, italic and bold).
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installBasic() {
|
||||||
installStyle( STYLE_REGULAR );
|
installStyle( STYLE_REGULAR );
|
||||||
installStyle( STYLE_ITALIC );
|
installStyle( STYLE_ITALIC );
|
||||||
installStyle( STYLE_BOLD );
|
installStyle( STYLE_BOLD );
|
||||||
installStyle( STYLE_BOLD_ITALIC );
|
installStyle( STYLE_BOLD_ITALIC );
|
||||||
|
}
|
||||||
|
|
||||||
// light
|
/**
|
||||||
|
* Creates and registers the fonts for light styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installLight() {
|
||||||
installStyle( STYLE_LIGHT );
|
installStyle( STYLE_LIGHT );
|
||||||
installStyle( STYLE_LIGHT_ITALIC );
|
installStyle( STYLE_LIGHT_ITALIC );
|
||||||
|
}
|
||||||
|
|
||||||
// semibold
|
/**
|
||||||
|
* Creates and registers the fonts for semibold (medium) styles.
|
||||||
|
* <p>
|
||||||
|
* When using FlatLaf, consider using {@link #installLazy()}.
|
||||||
|
*/
|
||||||
|
public static void installSemiBold() {
|
||||||
installStyle( STYLE_SEMIBOLD );
|
installStyle( STYLE_SEMIBOLD );
|
||||||
installStyle( STYLE_SEMIBOLD_ITALIC );
|
installStyle( STYLE_SEMIBOLD_ITALIC );
|
||||||
}
|
}
|
||||||
@@ -136,15 +201,6 @@ public class FlatRobotoFont
|
|||||||
* See {@code STYLE_} constants.
|
* See {@code STYLE_} constants.
|
||||||
*/
|
*/
|
||||||
public static boolean installStyle( String name ) {
|
public static boolean installStyle( String name ) {
|
||||||
try( InputStream in = FlatRobotoFont.class.getResourceAsStream( name ) ) {
|
return FontUtils.installFont( FlatRobotoFont.class.getResource( name ) );
|
||||||
Font font = Font.createFont( Font.TRUETYPE_FONT, in );
|
|
||||||
return GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont( font );
|
|
||||||
} catch( FontFormatException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
} catch( IOException ex ) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
module com.formdev.flatlaf.fonts.roboto {
|
module com.formdev.flatlaf.fonts.roboto {
|
||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
|
requires com.formdev.flatlaf;
|
||||||
|
|
||||||
exports com.formdev.flatlaf.fonts.roboto;
|
exports com.formdev.flatlaf.fonts.roboto;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||||
|
<booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/flatlaf-testing-modular-app"/>
|
<listEntry value="/flatlaf-testing-modular-app"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
@@ -16,10 +17,11 @@
|
|||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="-Ddummy=dummy"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="-Ddummy=dummy"/>
|
||||||
<listAttribute key="org.eclipse.jdt.launching.MODULEPATH">
|
<listAttribute key="org.eclipse.jdt.launching.MODULEPATH">
|
||||||
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-17/" path="4" type="4"/> "/>
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-17/" path="4" type="4"/> "/>
|
||||||
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-testing-modular-app/build/libs/flatlaf-testing-modular-app-2.5-SNAPSHOT.jar" path="4" type="2"/> "/>
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-testing-modular-app/build/libs/flatlaf-testing-modular-app-3.0-SNAPSHOT.jar" path="4" type="2"/> "/>
|
||||||
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-core/build/libs/flatlaf-2.5-SNAPSHOT.jar" path="4" type="2"/> "/>
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-core/build/libs/flatlaf-3.0-SNAPSHOT.jar" path="4" type="2"/> "/>
|
||||||
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-extras/build/libs/flatlaf-extras-2.5-SNAPSHOT.jar" path="4" type="2"/> "/>
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-extras/build/libs/flatlaf-extras-3.0-SNAPSHOT.jar" path="4" type="2"/> "/>
|
||||||
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry externalArchive="C:/Users/charly/.gradle/caches/modules-2/files-2.1/com.formdev/svgSalamander/1.1.2.4/828c2ce815bf62031764f5219597948bd2587aa5/svgSalamander-1.1.2.4.jar" path="4" type="2"/> "/>
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry internalArchive="/flatlaf-fonts-inter/build/libs/flatlaf-fonts-inter-3.19-SNAPSHOT.jar" path="4" type="2"/> "/>
|
||||||
|
<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry externalArchive="C:/Users/charly/.gradle/caches/modules-2/files-2.1/com.formdev/svgSalamander/1.1.4/e61742cb8baaf9ecf57a9779763d1de21ca9db5a/svgSalamander-1.1.4.jar" path="4" type="2"/> "/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="flatlaf-testing-modular-app"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="flatlaf-testing-modular-app"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-m com.formdev.flatlaf.testing.modular.app/com.formdev.flatlaf.testing.modular.app.FlatModularAppTest"/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-m com.formdev.flatlaf.testing.modular.app/com.formdev.flatlaf.testing.modular.app.FlatModularAppTest"/>
|
||||||
|
|||||||
@@ -22,9 +22,11 @@ plugins {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation( project( ":flatlaf-core" ) )
|
implementation( project( ":flatlaf-core" ) )
|
||||||
implementation( project( ":flatlaf-extras" ) )
|
implementation( project( ":flatlaf-extras" ) )
|
||||||
|
implementation( project( ":flatlaf-fonts-inter" ) )
|
||||||
}
|
}
|
||||||
|
|
||||||
flatlafModuleInfo {
|
flatlafModuleInfo {
|
||||||
dependsOn( ":flatlaf-core:jar" )
|
dependsOn( ":flatlaf-core:jar" )
|
||||||
dependsOn( ":flatlaf-extras:jar" )
|
dependsOn( ":flatlaf-extras:jar" )
|
||||||
|
dependsOn( ":flatlaf-fonts-inter:jar" )
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import com.formdev.flatlaf.FlatLaf;
|
|||||||
import com.formdev.flatlaf.FlatLightLaf;
|
import com.formdev.flatlaf.FlatLightLaf;
|
||||||
import com.formdev.flatlaf.extras.FlatSVGIcon;
|
import com.formdev.flatlaf.extras.FlatSVGIcon;
|
||||||
import com.formdev.flatlaf.extras.FlatSVGUtils;
|
import com.formdev.flatlaf.extras.FlatSVGUtils;
|
||||||
|
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
@@ -35,6 +36,8 @@ public class FlatModularAppTest
|
|||||||
{
|
{
|
||||||
public static void main( String[] args ) {
|
public static void main( String[] args ) {
|
||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
|
FlatInterFont.installBasic();
|
||||||
|
|
||||||
FlatLaf.registerCustomDefaultsSource(
|
FlatLaf.registerCustomDefaultsSource(
|
||||||
FlatModularAppTest.class.getResource( "/com/formdev/flatlaf/testing/modular/app/themes/" ) );
|
FlatModularAppTest.class.getResource( "/com/formdev/flatlaf/testing/modular/app/themes/" ) );
|
||||||
FlatLightLaf.setup();
|
FlatLightLaf.setup();
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ module com.formdev.flatlaf.testing.modular.app {
|
|||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
requires com.formdev.flatlaf;
|
requires com.formdev.flatlaf;
|
||||||
requires com.formdev.flatlaf.extras;
|
requires com.formdev.flatlaf.extras;
|
||||||
|
requires com.formdev.flatlaf.fonts.inter;
|
||||||
requires com.kitfox.svg;
|
requires com.kitfox.svg;
|
||||||
|
|
||||||
exports com.formdev.flatlaf.testing.modular.app.plaf;
|
exports com.formdev.flatlaf.testing.modular.app.plaf;
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ package com.formdev.flatlaf.testing;
|
|||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.GraphicsEnvironment;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
||||||
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||||
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
||||||
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import com.formdev.flatlaf.util.UIScale;
|
import com.formdev.flatlaf.util.UIScale;
|
||||||
import net.miginfocom.swing.*;
|
import net.miginfocom.swing.*;
|
||||||
|
|
||||||
@@ -37,9 +37,9 @@ public class FlatFontsTest
|
|||||||
{
|
{
|
||||||
public static void main( String[] args ) {
|
public static void main( String[] args ) {
|
||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
FlatInterFont.install();
|
FlatInterFont.installLazy();
|
||||||
FlatJetBrainsMonoFont.install();
|
FlatJetBrainsMonoFont.installLazy();
|
||||||
FlatRobotoFont.install();
|
FlatRobotoFont.installLazy();
|
||||||
|
|
||||||
FlatTestFrame frame = FlatTestFrame.create( args, "FlatFontsTest" );
|
FlatTestFrame frame = FlatTestFrame.create( args, "FlatFontsTest" );
|
||||||
frame.showFrame( FlatFontsTest::new );
|
frame.showFrame( FlatFontsTest::new );
|
||||||
@@ -49,7 +49,7 @@ public class FlatFontsTest
|
|||||||
FlatFontsTest() {
|
FlatFontsTest() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
Font[] allFonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
|
Font[] allFonts = FontUtils.getAllFonts();
|
||||||
|
|
||||||
TreeMap<String, TreeMap<String, Font>> familiesMap = new TreeMap<>();
|
TreeMap<String, TreeMap<String, Font>> familiesMap = new TreeMap<>();
|
||||||
for( Font font : allFonts ) {
|
for( Font font : allFonts ) {
|
||||||
|
|||||||
@@ -22,17 +22,16 @@ import java.awt.Font;
|
|||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.GraphicsEnvironment;
|
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.text.StyleContext;
|
|
||||||
import com.formdev.flatlaf.FlatLaf;
|
import com.formdev.flatlaf.FlatLaf;
|
||||||
import com.formdev.flatlaf.FlatSystemProperties;
|
import com.formdev.flatlaf.FlatSystemProperties;
|
||||||
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
||||||
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||||
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
||||||
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import com.formdev.flatlaf.util.Graphics2DProxy;
|
import com.formdev.flatlaf.util.Graphics2DProxy;
|
||||||
import com.formdev.flatlaf.util.HiDPIUtils;
|
import com.formdev.flatlaf.util.HiDPIUtils;
|
||||||
import com.formdev.flatlaf.util.JavaCompatibility;
|
import com.formdev.flatlaf.util.JavaCompatibility;
|
||||||
@@ -51,9 +50,9 @@ public class FlatPaintingStringTest
|
|||||||
System.setProperty( "FlatLaf.debug.HiDPIUtils.useDebugScaleFactor", "true" );
|
System.setProperty( "FlatLaf.debug.HiDPIUtils.useDebugScaleFactor", "true" );
|
||||||
|
|
||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
FlatInterFont.install();
|
FlatInterFont.installLazy();
|
||||||
FlatJetBrainsMonoFont.install();
|
FlatJetBrainsMonoFont.installLazy();
|
||||||
FlatRobotoFont.install();
|
FlatRobotoFont.installLazy();
|
||||||
|
|
||||||
FlatTestFrame frame = FlatTestFrame.create( args, "FlatPaintingStringTest" );
|
FlatTestFrame frame = FlatTestFrame.create( args, "FlatPaintingStringTest" );
|
||||||
|
|
||||||
@@ -67,8 +66,7 @@ public class FlatPaintingStringTest
|
|||||||
FlatPaintingStringTest() {
|
FlatPaintingStringTest() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
|
||||||
String[] availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment()
|
String[] availableFontFamilyNames = FontUtils.getAvailableFontFamilyNames().clone();
|
||||||
.getAvailableFontFamilyNames().clone();
|
|
||||||
Arrays.sort( availableFontFamilyNames );
|
Arrays.sort( availableFontFamilyNames );
|
||||||
|
|
||||||
Font currentFont = UIManager.getFont( "Label.font" );
|
Font currentFont = UIManager.getFont( "Label.font" );
|
||||||
@@ -194,7 +192,7 @@ public class FlatPaintingStringTest
|
|||||||
if( font.getFamily().equals( family ) )
|
if( font.getFamily().equals( family ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Font newFont = StyleContext.getDefaultStyleContext().getFont( family, font.getStyle(), font.getSize() );
|
Font newFont = FontUtils.getCompositeFont( family, font.getStyle(), font.getSize() );
|
||||||
UIManager.put( "defaultFont", newFont );
|
UIManager.put( "defaultFont", newFont );
|
||||||
updateFontMetricsLabel();
|
updateFontMetricsLabel();
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.text.StyleContext;
|
|
||||||
import org.fife.ui.autocomplete.AutoCompletion;
|
import org.fife.ui.autocomplete.AutoCompletion;
|
||||||
import org.fife.ui.autocomplete.CompletionProvider;
|
import org.fife.ui.autocomplete.CompletionProvider;
|
||||||
import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory;
|
import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory;
|
||||||
@@ -50,6 +49,7 @@ import org.fife.ui.rtextarea.RTextArea;
|
|||||||
import org.fife.ui.rtextarea.RTextScrollPane;
|
import org.fife.ui.rtextarea.RTextScrollPane;
|
||||||
import org.fife.ui.rtextarea.SearchContext;
|
import org.fife.ui.rtextarea.SearchContext;
|
||||||
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||||
|
import com.formdev.flatlaf.util.FontUtils;
|
||||||
import com.formdev.flatlaf.util.UIScale;
|
import com.formdev.flatlaf.util.UIScale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -171,8 +171,7 @@ class FlatThemeEditorPane
|
|||||||
|
|
||||||
private static Font createEditorFont( int sizeIncr ) {
|
private static Font createEditorFont( int sizeIncr ) {
|
||||||
int size = UIManager.getFont( "defaultFont" ).getSize() + sizeIncr;
|
int size = UIManager.getFont( "defaultFont" ).getSize() + sizeIncr;
|
||||||
StyleContext sc = StyleContext.getDefaultStyleContext();
|
Font font = FontUtils.getCompositeFont( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, size );
|
||||||
Font font = sc.getFont( FlatJetBrainsMonoFont.FAMILY, Font.PLAIN, size );
|
|
||||||
if( isFallbackFont( font ) ) {
|
if( isFallbackFont( font ) ) {
|
||||||
Font defaultFont = RTextArea.getDefaultFont();
|
Font defaultFont = RTextArea.getDefaultFont();
|
||||||
font = defaultFont.deriveFont( (float) size );
|
font = defaultFont.deriveFont( (float) size );
|
||||||
|
|||||||
@@ -108,10 +108,9 @@ class FlatThemeFileEditor
|
|||||||
System.setProperty( "user.language", "en" );
|
System.setProperty( "user.language", "en" );
|
||||||
|
|
||||||
SwingUtilities.invokeLater( () -> {
|
SwingUtilities.invokeLater( () -> {
|
||||||
if( SystemInfo.isJava_11_orLater )
|
FlatInterFont.installLazy();
|
||||||
FlatInterFont.install();
|
FlatJetBrainsMonoFont.installLazy();
|
||||||
FlatJetBrainsMonoFont.install();
|
FlatRobotoFont.installLazy();
|
||||||
FlatRobotoFont.install();
|
|
||||||
|
|
||||||
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" );
|
FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user