--- /dev/null
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.fonts.apps;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.fop.util.CommandLineLogger;
+
+/**
+ * Abstract base class for the PFM and TTF Reader command-line applications.
+ */
+public abstract class AbstractFontReader {
+
+ /** Logger instance */
+ protected static Log log;
+
+ /**
+ * Main constructor.
+ */
+ protected AbstractFontReader() {
+ // Create logger if necessary here to allow embedding of TTFReader in
+ // other applications. There is a possible but harmless synchronization
+ // issue.
+ if (log == null) {
+ log = LogFactory.getLog(AbstractFontReader.class);
+ }
+ }
+
+ /**
+ * Parse commandline arguments. put options in the HashMap and return
+ * arguments in the String array
+ * the arguments: -fn Perpetua,Bold -cn PerpetuaBold per.ttf Perpetua.xml
+ * returns a String[] with the per.ttf and Perpetua.xml. The hash
+ * will have the (key, value) pairs: (-fn, Perpetua) and (-cn, PerpetuaBold)
+ * @param options Map that will receive options
+ * @param args the command-line arguments
+ * @return the arguments
+ */
+ protected static String[] parseArguments(Map options, String[] args) {
+ List arguments = new java.util.ArrayList();
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].startsWith("-")) {
+ if ("-d".equals(args[i]) || "-q".equals(args[i])) {
+ options.put(args[i], "");
+ } else if ((i + 1) < args.length && !args[i + 1].startsWith("-")) {
+ options.put(args[i], args[i + 1]);
+ i++;
+ } else {
+ options.put(args[i], "");
+ }
+ } else {
+ arguments.add(args[i]);
+ }
+ }
+ return (String[])arguments.toArray(new String[0]);
+ }
+
+ /**
+ * Sets the logging level.
+ * @param level the logging level ("debug", "info", "error" etc., see Jakarta Commons Logging)
+ */
+ protected static void setLogLevel(String level) {
+ // Set the evel for future loggers.
+ LogFactory.getFactory().setAttribute("level", level);
+ if (log instanceof CommandLineLogger) {
+ // Set the level for the logger creates already.
+ ((CommandLineLogger) log).setLogLevel(level);
+ }
+ }
+
+ /**
+ * Determines the log level based of the options from the command-line.
+ * @param options the command-line options
+ */
+ protected static void determineLogLevel(Map options) {
+ //Determine log level
+ if (options.get("-d") != null) {
+ setLogLevel("debug");
+ } else if (options.get("-q") != null) {
+ setLogLevel("error");
+ } else {
+ setLogLevel("info");
+ }
+ }
+
+}
package org.apache.fop.fonts.apps;
import java.io.File;
-import java.io.InputStream;
import java.io.IOException;
-import java.util.Map;
-import java.util.List;
+import java.io.InputStream;
import java.util.Iterator;
+import java.util.Map;
+
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
-//FOP
import org.apache.fop.Version;
import org.apache.fop.fonts.type1.PFMFile;
import org.apache.fop.util.CommandLineLogger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* A tool which reads PFM files from Adobe Type 1 fonts and creates
* XML font metrics file for use in FOP.
*/
-public class PFMReader {
+public class PFMReader extends AbstractFontReader {
- /**
- * logging instance
- */
- protected static Log log;
-
/**
* Main constructor.
*/
public PFMReader() {
- // Create logger if necessary here to allow embedding of PFMReader in
- // other applications. There is a possible but harmless synchronization
- // issue.
- if (log == null) {
- log = LogFactory.getLog(PFMReader.class);
- }
- }
-
- /**
- * Parse commandline arguments. put options in the HashMap and return
- * arguments in the String array
- * the arguments: -fn Perpetua,Bold -cn PerpetuaBold per.ttf Perpetua.xml
- * returns a String[] with the per.ttf and Perpetua.xml. The hash
- * will have the (key, value) pairs: (-fn, Perpetua) and (-cn, PerpetuaBold)
- */
- private static String[] parseArguments(Map options, String[] args) {
- List arguments = new java.util.ArrayList();
- for (int i = 0; i < args.length; i++) {
- if (args[i].startsWith("-")) {
- if ("-d".equals(args[i]) || "-q".equals(args[i])) {
- options.put(args[i], "");
- } else if ((i + 1) < args.length && !args[i + 1].startsWith("-")) {
- options.put(args[i], args[i + 1]);
- i++;
- } else {
- options.put(args[i], "");
- }
- } else {
- arguments.add(args[i]);
- }
- }
-
- return (String[])arguments.toArray(new String[arguments.size()]);
+ super();
}
private static void displayUsage() {
CommandLineLogger.class.getName());
}
- //Determine log level
- if (options.get("-d") != null) {
- setLogLevel("debug");
- } else if (options.get("-q") != null) {
- setLogLevel("error");
- } else {
- setLogLevel("info");
- }
-
+ determineLogLevel(options);
+
PFMReader app = new PFMReader();
log.info("PFM Reader for Apache FOP " + Version.getVersion() + "\n");
}
}
- private static void setLogLevel(String level) {
- // Set the evel for future loggers.
- LogFactory.getFactory().setAttribute("level", level);
- if (log instanceof CommandLineLogger) {
- // Set the level for the logger creates already.
- ((CommandLineLogger) log).setLogLevel(level);
- }
- }
-
/**
* Read a PFM file and returns it as an object.
*
}
return doc;
}
-
-
- private String escapeString(String str) {
- StringBuffer esc = new StringBuffer();
-
- for (int i = 0; i < str.length(); i++) {
- if (str.charAt(i) == '\\') {
- esc.append("\\\\");
- } else {
- esc.append(str.charAt(i));
- }
- }
-
- return esc.toString();
- }
-
}
import java.io.File;
import java.io.IOException;
-import java.util.Map;
-import java.util.List;
import java.util.Iterator;
+import java.util.Map;
+
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
-//FOP
import org.apache.fop.Version;
import org.apache.fop.fonts.truetype.FontFileReader;
import org.apache.fop.fonts.truetype.TTFCmapEntry;
import org.apache.fop.fonts.truetype.TTFFile;
import org.apache.fop.util.CommandLineLogger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* A tool which reads TTF files and generates
* XML font metrics file for use in FOP.
*/
-public class TTFReader {
-
- /**
- * logging instance
- */
- protected static Log log;
+public class TTFReader extends AbstractFontReader {
/**
* Main constructor.
*/
public TTFReader() {
- // Create logger if necessary here to allow embedding of TTFReader in
- // other applications. There is a possible but harmless synchronization
- // issue.
- if (log == null) {
- log = LogFactory.getLog(TTFReader.class);
- }
+ super();
}
- /**
- * Parse commandline arguments. put options in the HashMap and return
- * arguments in the String array
- * the arguments: -fn Perpetua,Bold -cn PerpetuaBold per.ttf Perpetua.xml
- * returns a String[] with the per.ttf and Perpetua.xml. The hash
- * will have the (key, value) pairs: (-fn, Perpetua) and (-cn, PerpetuaBold)
- */
- private static String[] parseArguments(Map options, String[] args) {
- List arguments = new java.util.ArrayList();
- for (int i = 0; i < args.length; i++) {
- if (args[i].startsWith("-")) {
- if ("-d".equals(args[i]) || "-q".equals(args[i])) {
- options.put(args[i], "");
- } else if ((i + 1) < args.length && !args[i + 1].startsWith("-")) {
- options.put(args[i], args[i + 1]);
- i++;
- } else {
- options.put(args[i], "");
- }
- } else {
- arguments.add(args[i]);
- }
- }
-
- return (String[])arguments.toArray(new String[0]);
- }
-
-
private static void displayUsage() {
System.out.println(
"java " + TTFReader.class.getName() + " [options] fontfile.ttf xmlfile.xml");
CommandLineLogger.class.getName());
}
- //Determine log level
- if (options.get("-d") != null) {
- setLogLevel("debug");
- } else if (options.get("-q") != null) {
- setLogLevel("error");
- } else {
- setLogLevel("info");
- }
+ determineLogLevel(options);
TTFReader app = new TTFReader();
}
}
- private static void setLogLevel(String level) {
- // Set the evel for future loggers.
- LogFactory.getFactory().setAttribute("level", level);
- if (log instanceof CommandLineLogger) {
- // Set the level for the logger creates already.
- ((CommandLineLogger) log).setLogLevel(level);
- }
- }
-
/**
* Read a TTF file and returns it as an object.
*
return stb.toString();
}
- private String escapeString(String str) {
- StringBuffer esc = new StringBuffer();
-
- for (int i = 0; i < str.length(); i++) {
- if (str.charAt(i) == '\\') {
- esc.append("\\\\");
- } else {
- esc.append(str.charAt(i));
- }
- }
-
- return esc.toString();
- }
-
}