xdg-basedir-compliant-fontconfig.patch 1.5 KB

123456789101112131415161718192021222324252627282930313233
  1. --- a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
  2. +++ b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java
  3. @@ -352,7 +352,29 @@
  4. String userDir = System.getProperty("user.home");
  5. String version = System.getProperty("java.version");
  6. String fs = File.separator;
  7. - String dir = userDir+fs+".java"+fs+"fonts"+fs+version;
  8. + String dir;
  9. +
  10. + /* On Linux systems, put the font config into
  11. + * ${XDG_CONFIG_HOME:-$HOME/.config}/java/fonts in order to follow
  12. + * the XDG Base Directory Specification.
  13. + */
  14. + if (System.getProperty("os.name").equals("Linux")) {
  15. + /* assume homedir can be found, which the jvm already does */
  16. + String xdgDefaultConfigHome = System.getenv("HOME")+"/.config";
  17. + String xdgConfigHomeEnvVar = "XDG_CONFIG_HOME";
  18. + String xdgConfigDir;
  19. +
  20. + String xdgSetConfigDir = System.getenv(xdgConfigHomeEnvVar);
  21. +
  22. + if (xdgSetConfigDir == null)
  23. + xdgConfigDir = xdgDefaultConfigHome;
  24. + else
  25. + xdgConfigDir = xdgSetConfigDir;
  26. +
  27. + dir = xdgConfigDir+"/java/fonts/"+version;
  28. + } else {
  29. + dir = userDir+fs+".java"+fs+"fonts"+fs+version;
  30. + }
  31. Locale locale = SunToolkit.getStartupLocale();
  32. String lang = locale.getLanguage();
  33. String country = locale.getCountry();