//Copyright 2001-2005 FreeHEP. package org.freehep.graphics2d.font; /** * Lookup class provides conversion between different encodings and character * tables using character name, encoding index, and unicode. In order to add new * tables original code should be modified. * * @author Sami Kama * @version $Id: Lookup.java,v 1.4 2009-08-17 21:44:44 murkle Exp $ */ public class Lookup { private static Lookup instance; private CharTable[] tables; public static Lookup getInstance() { if (instance == null) { instance = new Lookup(); } return (instance); } private int ntables = 8; private Lookup() { tables = new CharTable[ntables]; tables[0] = new Symbol(); tables[1] = new Expert(); tables[2] = new Zapfdingbats(); tables[3] = new STDLatin(); tables[4] = new MACLatin(); tables[5] = new WINLatin(); tables[6] = new PDFLatin(); tables[7] = new ISOLatin(); } /** * Converts a name to unicode. This method takes name of the character and * returns character as a unicode character. * * @return requested unicode character. */ public char toUnicode(String name) { for (int i = 0; i < ntables; i++) { char uc = tables[i].toUnicode(name); if (uc != '\uffff') { return (uc); } } return ('\uffff'); } /** * Converts a unicode character to name. * * @return requested character name. */ public String toName(char uc) { for (int i = 0; i < ntables; i++) { String name = tables[i].toName(uc); if (name != null) { return (name); } } return (null); } /** * Converts a unicode character to name. * * @return requested character name. */ public String toName(Character uc) { for (int i = 0; i < ntables; i++) { String name = tables[i].toName(uc); if (name != null) { return (name); } } return (null); } /** * Gives the requested encoding table Valid table names can be requested * with a call to * * @see #getTableNames(). * * @return requested encoding. */ public CharTable getTable(String tableName) { for (int i = 0; i < ntables; i++) { String tblName = tables[i].getEncoding() + tables[i].getName(); if (tblName.equalsIgnoreCase(tableName)) { return (tables[i]); } } return (null); } /** * Gives the total number of tables included in the file * * @return number of tables */ public int getNumberOfTables() { return (ntables); } /** * Gives the names of tables that can be used in a string array. * * @return An array of String[] containing the table names */ public String[] getTableNames() { String[] tblnames = new String[ntables]; for (int i = 0; i < ntables; i++) { tblnames[i] = tables[i].getEncoding() + tables[i].getName(); } return tblnames; } }