Fonts: support lazy font file loading (extends PRs #545 and #614)

This commit is contained in:
Karl Tauber
2022-11-21 11:51:27 +01:00
parent 6afc747790
commit d491847754
25 changed files with 525 additions and 126 deletions

View File

@@ -19,13 +19,13 @@ package com.formdev.flatlaf.testing;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.*;
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.FontUtils;
import com.formdev.flatlaf.util.UIScale;
import net.miginfocom.swing.*;
@@ -37,9 +37,9 @@ public class FlatFontsTest
{
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatInterFont.install();
FlatJetBrainsMonoFont.install();
FlatRobotoFont.install();
FlatInterFont.installLazy();
FlatJetBrainsMonoFont.installLazy();
FlatRobotoFont.installLazy();
FlatTestFrame frame = FlatTestFrame.create( args, "FlatFontsTest" );
frame.showFrame( FlatFontsTest::new );
@@ -49,7 +49,7 @@ public class FlatFontsTest
FlatFontsTest() {
initComponents();
Font[] allFonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
Font[] allFonts = FontUtils.getAllFonts();
TreeMap<String, TreeMap<String, Font>> familiesMap = new TreeMap<>();
for( Font font : allFonts ) {

View File

@@ -22,17 +22,16 @@ import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.util.Arrays;
import javax.swing.*;
import javax.swing.text.StyleContext;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.FlatSystemProperties;
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.FontUtils;
import com.formdev.flatlaf.util.Graphics2DProxy;
import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.JavaCompatibility;
@@ -51,9 +50,9 @@ public class FlatPaintingStringTest
System.setProperty( "FlatLaf.debug.HiDPIUtils.useDebugScaleFactor", "true" );
SwingUtilities.invokeLater( () -> {
FlatInterFont.install();
FlatJetBrainsMonoFont.install();
FlatRobotoFont.install();
FlatInterFont.installLazy();
FlatJetBrainsMonoFont.installLazy();
FlatRobotoFont.installLazy();
FlatTestFrame frame = FlatTestFrame.create( args, "FlatPaintingStringTest" );
@@ -67,8 +66,7 @@ public class FlatPaintingStringTest
FlatPaintingStringTest() {
initComponents();
String[] availableFontFamilyNames = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames().clone();
String[] availableFontFamilyNames = FontUtils.getAvailableFontFamilyNames().clone();
Arrays.sort( availableFontFamilyNames );
Font currentFont = UIManager.getFont( "Label.font" );
@@ -194,7 +192,7 @@ public class FlatPaintingStringTest
if( font.getFamily().equals( family ) )
return;
Font newFont = StyleContext.getDefaultStyleContext().getFont( family, font.getStyle(), font.getSize() );
Font newFont = FontUtils.getCompositeFont( family, font.getStyle(), font.getSize() );
UIManager.put( "defaultFont", newFont );
updateFontMetricsLabel();