From 350ff313ada007bd4ef10e73624379b876cfe34c Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Tue, 22 Jun 2021 19:52:34 -0400 Subject: [PATCH] trying to improve the default font on macOS --- .../processing/app/platform/MacPlatform.java | 28 +++++++++++++++---- app/src/processing/app/ui/Toolkit.java | 2 -- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/src/processing/app/platform/MacPlatform.java b/app/src/processing/app/platform/MacPlatform.java index d5eb731da..9040c65dc 100644 --- a/app/src/processing/app/platform/MacPlatform.java +++ b/app/src/processing/app/platform/MacPlatform.java @@ -22,10 +22,7 @@ package processing.app.platform; -import java.awt.Color; -import java.awt.Component; -import java.awt.Desktop; -import java.awt.Graphics; +import java.awt.*; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -35,11 +32,13 @@ import javax.swing.Icon; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.UIManager; +import javax.swing.plaf.FontUIResource; import processing.app.Base; import processing.app.Messages; import processing.app.Preferences; import processing.app.ui.About; +import processing.app.ui.Toolkit; /** @@ -106,8 +105,14 @@ public class MacPlatform extends DefaultPlatform { public void setLookAndFeel() throws Exception { super.setLookAndFeel(); - String laf = Preferences.get("editor.laf"); - if ("org.violetlib.aqua.AquaLookAndFeel".equals(laf)) { + String laf = UIManager.getLookAndFeel().getClass().getName(); + if ("com.apple.laf.AquaLookAndFeel".equals(laf)) { + //setUIFont(new FontUIResource(".AppleSystemUIFont", Font.PLAIN, 12)); + // oh my god, the kerning, the tracking, my eyes... + //setUIFont(new FontUIResource(".SFNS-Regular", Font.PLAIN, 13)); + //setUIFont(new FontUIResource(Toolkit.getSansFont(14, Font.PLAIN))); + + } else if ("org.violetlib.aqua.AquaLookAndFeel".equals(laf)) { Icon collapse = new VAquaTreeIcon(true); Icon open = new VAquaTreeIcon(false); Icon leaf = new VAquaEmptyIcon(); @@ -120,6 +125,17 @@ public class MacPlatform extends DefaultPlatform { } + // Rewritten from https://stackoverflow.com/a/7434935 + static private void setUIFont(FontUIResource f) { + for (Object key : UIManager.getLookAndFeelDefaults().keySet()) { + Object value = UIManager.get(key); + if (value instanceof FontUIResource) { + UIManager.put(key, f); + } + } + } + + public File getSettingsFolder() throws Exception { return new File(getLibraryFolder(), "Processing"); } diff --git a/app/src/processing/app/ui/Toolkit.java b/app/src/processing/app/ui/Toolkit.java index 125303660..6b0dc7e7e 100644 --- a/app/src/processing/app/ui/Toolkit.java +++ b/app/src/processing/app/ui/Toolkit.java @@ -157,8 +157,6 @@ public class Toolkit { * Create a menu item and set its KeyStroke by name (so it can be stored * in the language settings or the preferences. Syntax is here: * https://docs.oracle.com/javase/8/docs/api/javax/swing/KeyStroke.html#getKeyStroke-java.lang.String- - * @param sequence the name, as outlined by the KeyStroke API - * @param fallback what to use if getKeyStroke() comes back null */ static public JMenuItem newJMenuItemExt(String base) { JMenuItem menuItem = new JMenuItem(Language.text(base));