summarylogtreecommitdiffstats
path: root/xdg-basedir-compliant-fontconfig.patch
diff options
context:
space:
mode:
Diffstat (limited to 'xdg-basedir-compliant-fontconfig.patch')
-rw-r--r--xdg-basedir-compliant-fontconfig.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/xdg-basedir-compliant-fontconfig.patch b/xdg-basedir-compliant-fontconfig.patch
new file mode 100644
index 000000000000..a553b1689bc6
--- /dev/null
+++ b/xdg-basedir-compliant-fontconfig.patch
@@ -0,0 +1,35 @@
+diff --git a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
+index 0ea741c..53d1f4d 100644
+--- a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
++++ b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
+@@ -368,7 +368,29 @@ public class FcFontConfiguration extends FontConfiguration {
+ String userDir = System.getProperty("user.home");
+ String version = System.getProperty("java.version");
+ String fs = File.separator;
+- String dir = userDir+fs+".java"+fs+"fonts"+fs+version;
++ String dir;
++
++ /* On Linux systems, put the font config into
++ * ${XDG_CONFIG_HOME:-$HOME/.config}/java/fonts in order to follow
++ * the XDG Base Directory Specification.
++ */
++ if (System.getProperty("os.name").equals("Linux")) {
++ /* assume homedir can be found, which the jvm already does */
++ String xdgDefaultConfigHome = System.getenv("HOME")+"/.config";
++ String xdgConfigHomeEnvVar = "XDG_CONFIG_HOME";
++ String xdgConfigDir;
++
++ String xdgSetConfigDir = System.getenv(xdgConfigHomeEnvVar);
++
++ if (xdgSetConfigDir == null)
++ xdgConfigDir = xdgDefaultConfigHome;
++ else
++ xdgConfigDir = xdgSetConfigDir;
++
++ dir = xdgConfigDir+"/java/fonts/"+version;
++ } else {
++ dir = userDir+fs+".java"+fs+"fonts"+fs+version;
++ }
+ Locale locale = SunToolkit.getStartupLocale();
+ String lang = locale.getLanguage();
+ String country = locale.getCountry();