From c80bc652e9dc3a0d47a4f44984735cb3d3aaa902 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 28 Oct 2012 11:13:18 +0000 Subject: [PATCH] Linux font list parsing fix. --- .../juce_graphics/native/juce_linux_Fonts.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/juce_graphics/native/juce_linux_Fonts.cpp b/modules/juce_graphics/native/juce_linux_Fonts.cpp index 47c0860997..1ed9d164f2 100644 --- a/modules/juce_graphics/native/juce_linux_Fonts.cpp +++ b/modules/juce_graphics/native/juce_linux_Fonts.cpp @@ -89,7 +89,22 @@ public: { forEachXmlChildElementWithTagName (*fontsInfo, e, "dir") { - fontDirs.add (e->getAllSubText().trim()); + String fontPath (e->getAllSubText().trim()); + + if (fontPath.isNotEmpty()) + { + if (e->getStringAttribute ("prefix") == "xdg") + { + String xdgDataHome (SystemStats::getEnvironmentVariable ("XDG_DATA_HOME", String::empty)); + + if (xdgDataHome.trimStart().isEmpty()) + xdgDataHome = "~/.local/share"; + + fontPath = File (xdgDataHome).getChildFile (fontPath).getFullPathName(); + } + + fontDirs.add (fontPath); + } } } } @@ -97,7 +112,7 @@ public: if (fontDirs.size() == 0) fontDirs.add ("/usr/X11R6/lib/X11/fonts"); - fontDirs.removeEmptyStrings (true); + fontDirs.removeDuplicates (false); } bool next()