diff --git a/app/src/processing/app/ui/Toolkit.java b/app/src/processing/app/ui/Toolkit.java index e30b9f98a5..8bc4d4b9c3 100644 --- a/app/src/processing/app/ui/Toolkit.java +++ b/app/src/processing/app/ui/Toolkit.java @@ -975,10 +975,14 @@ static public Font getSansFont(int size, int style) { * the Preferences window, and can be used by HTMLEditorKit for WebFrame). */ static private Font createFont(String filename, int size) throws IOException, FontFormatException { + boolean registerFont = false; + // Can't use Base.getJavaHome(), because if we're not using our local JRE, // we likely have bigger problems with how things are running. File fontFile = new File(System.getProperty("java.home"), "lib/fonts/" + filename); if (!fontFile.exists()) { + // any of the fallbacks below is a custom location, so try to register the font as well + registerFont = true; // if we're debugging from Eclipse, grab it from the work folder (user.dir is /app) fontFile = new File(System.getProperty("user.dir"), "../build/shared/lib/fonts/" + filename); } @@ -986,6 +990,10 @@ static private Font createFont(String filename, int size) throws IOException, Fo // if we're debugging the new Java Mode from Eclipse, paths are different fontFile = new File(System.getProperty("user.dir"), "../../shared/lib/fonts/" + filename); } + if (!fontFile.exists()) { + // this if for Linux, where we're shipping a second copy of the fonts outside of java + fontFile = Platform.getContentFile("lib/fonts/" + filename); + } if (!fontFile.exists()) { String msg = "Could not find required fonts. "; // This gets the JAVA_HOME for the *local* copy of the JRE installed with @@ -1003,6 +1011,13 @@ static private Font createFont(String filename, int size) throws IOException, Fo BufferedInputStream input = new BufferedInputStream(new FileInputStream(fontFile)); Font font = Font.createFont(Font.TRUETYPE_FONT, input); input.close(); + + // this makes Font() work for font files in custom locations + if (registerFont) { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + ge.registerFont(font); + } + return font.deriveFont((float) size); } diff --git a/build/build.xml b/build/build.xml index eaaf4dc94f..b1140e02a2 100644 --- a/build/build.xml +++ b/build/build.xml @@ -611,17 +611,10 @@ - + - - - - - @@ -756,7 +749,7 @@ - + @@ -857,11 +850,6 @@ --> - - - - - - + @@ -1119,10 +1107,6 @@ --> - - - -