Hi, I'm making a call to org.apache.fop.tools.fontlist.FontListGenerator.listFonts( ... ) to get a list of font names for my desktop application. To get the font names, I take the keys from the returned fontFamilies SortedMap; the actual data is junked. I hadn't realised just how much memory is used by listfont( ... ) - on some platforms such as Windows 7, in excess of 250 MB. In this case I'm hitting out of memory errors. I was wondering if there's a simpler way (uses less memory) to get just the font names (first family names)? As I said, I don't make use of the metrics and other font details...just the first family name for each font. Digging down into listfont( ... ), I was wondering if it's safe to take the firstFamilyName and place it into a list say and then drop the following lines for the containers/sort? Iterator iter = fontInfo.getFontTriplets().entrySet().iterator();while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); FontTriplet triplet = (FontTriplet)entry.getKey(); String key = (String)entry.getValue(); FontSpec container; if (keyBag.contains(key)) { keyBag.remove(key); FontMetrics metrics = (FontMetrics)fonts.get(key); container = new FontSpec(key, metrics); container.addFamilyNames(metrics.getFamilyNames()); keys.put(key, container); String firstFamilyName = (String)container.getFamilyNames().first(); List containers = (List)fontFamilies.get(firstFamilyName); if (containers == null) { containers = new java.util.ArrayList(); fontFamilies.put(firstFamilyName, containers); } containers.add(container); Collections.sort(containers); } else { container = (FontSpec)keys.get(key); } container.addTriplet(triplet);} I'm guessing a lot of memory is chewed up in the containers/sort section...but really I can't be sure as I don't fully follow what's going on! Ideally I'd just up the amount of memory supplied to the desktop application, but I don't have that option and besides, it just delays the problem of running out of memory.
Thanks in advance,Bernard.