/******************************************************************************* * Copyright 2010 Simon Mieth * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package org.kabeja.tools; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Hashtable; /** * @author <a href="mailto:simon.mieth@gmx.de">Simon Mieth</a> * */ public class FontManager { private static FontManager instance = new FontManager(); private String fontDescription = "conf/font.properties"; private Hashtable fontProperties = new Hashtable(); private FontManager() { loadFontDescription(); } public void setFontDescription(String file) { this.fontDescription = file; loadFontDescription(); } private void loadFontDescription() { fontProperties.clear(); try { InputStream stream = this.getClass() .getResourceAsStream(this.fontDescription); if (stream == null) { try { stream = new FileInputStream(this.fontDescription); } catch (FileNotFoundException e1) { } } if (stream != null) { BufferedReader in = new BufferedReader(new InputStreamReader( stream)); String line = null; while ((line = in.readLine()) != null) { int index = line.indexOf("="); if (index >= 0) { String font = line.substring(0, index).trim() .toLowerCase(); String svgFont = line.substring(index + 1).trim(); fontProperties.put(font, svgFont); } } in.close(); } } catch (Exception e) { e.printStackTrace(); } } public static FontManager getInstance() { return instance; } /** * Query if a SVG font description exists for the given shx font. * * @param font * The font.shx or font * @return */ public boolean hasFontDescription(String font) { font = getFontKey(font); if (fontProperties.containsKey(font)) { return true; } return false; } public String getFontDescription(String font) { return (String) fontProperties.get(getFontKey(font)); } private String getFontKey(String font) { font = font.toLowerCase(); if (font.endsWith(".shx")) { font = font.substring(0, font.indexOf(".shx")); } return font; } }