first commit

This commit is contained in:
MaddoScientisto 2026-03-14 20:04:39 +01:00
commit 4d332ef662
27586 changed files with 3281783 additions and 0 deletions

View file

@ -0,0 +1,39 @@
package org.apache.commons.logging;
public interface Log {
void debug(Object paramObject);
void debug(Object paramObject, Throwable paramThrowable);
void error(Object paramObject);
void error(Object paramObject, Throwable paramThrowable);
void fatal(Object paramObject);
void fatal(Object paramObject, Throwable paramThrowable);
void info(Object paramObject);
void info(Object paramObject, Throwable paramThrowable);
boolean isDebugEnabled();
boolean isErrorEnabled();
boolean isFatalEnabled();
boolean isInfoEnabled();
boolean isTraceEnabled();
boolean isWarnEnabled();
void trace(Object paramObject);
void trace(Object paramObject, Throwable paramThrowable);
void warn(Object paramObject);
void warn(Object paramObject, Throwable paramThrowable);
}

View file

@ -0,0 +1,26 @@
package org.apache.commons.logging;
public class LogConfigurationException extends RuntimeException {
private static final long serialVersionUID = 8486587136871052495L;
public LogConfigurationException() {}
public LogConfigurationException(String message) {
super(message);
}
public LogConfigurationException(Throwable cause) {
this((cause == null) ? null : cause.toString(), cause);
}
public LogConfigurationException(String message, Throwable cause) {
super(message + " (Caused by " + cause + ")");
this.cause = cause;
}
protected Throwable cause = null;
public Throwable getCause() {
return this.cause;
}
}

View file

@ -0,0 +1,693 @@
package org.apache.commons.logging;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
public abstract class LogFactory {
private static PrintStream diagnosticsStream = null;
protected static Hashtable factories = null;
protected static volatile LogFactory nullClassLoaderFactory = null;
private static final Hashtable createFactoryStore() {
String str;
Hashtable result = null;
try {
str = getSystemProperty("org.apache.commons.logging.LogFactory.HashtableImpl", null);
} catch (SecurityException ex) {
str = null;
}
if (str == null)
str = "org.apache.commons.logging.impl.WeakHashtable";
try {
Class implementationClass = Class.forName(str);
result = (Hashtable)implementationClass.newInstance();
} catch (Throwable t) {
handleThrowable(t);
if (!"org.apache.commons.logging.impl.WeakHashtable".equals(str))
if (isDiagnosticsEnabled()) {
logDiagnostic("[ERROR] LogFactory: Load of custom hashtable failed");
} else {
System.err.println("[ERROR] LogFactory: Load of custom hashtable failed");
}
}
if (result == null)
result = new Hashtable();
return result;
}
private static String trim(String src) {
if (src == null)
return null;
return src.trim();
}
protected static void handleThrowable(Throwable t) {
if (t instanceof ThreadDeath)
throw (ThreadDeath)t;
if (t instanceof VirtualMachineError)
throw (VirtualMachineError)t;
}
public static LogFactory getFactory() throws LogConfigurationException {
ClassLoader contextClassLoader = getContextClassLoaderInternal();
if (contextClassLoader == null)
if (isDiagnosticsEnabled())
logDiagnostic("Context classloader is null.");
LogFactory factory = getCachedFactory(contextClassLoader);
if (factory != null)
return factory;
if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] LogFactory implementation requested for the first time for context classloader " + objectId(contextClassLoader));
logHierarchy("[LOOKUP] ", contextClassLoader);
}
Properties props = getConfigurationFile(contextClassLoader, "commons-logging.properties");
ClassLoader baseClassLoader = contextClassLoader;
if (props != null) {
String useTCCLStr = props.getProperty("use_tccl");
if (useTCCLStr != null)
if (!Boolean.valueOf(useTCCLStr).booleanValue())
baseClassLoader = thisClassLoader;
}
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...");
try {
String factoryClass = getSystemProperty("org.apache.commons.logging.LogFactory", null);
if (factoryClass != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Creating an instance of LogFactory class '" + factoryClass + "' as specified by system property " + "org.apache.commons.logging.LogFactory");
factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined.");
}
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] A security exception occurred while trying to create an instance of the custom factory class: [" + trim(e.getMessage()) + "]. Trying alternative implementations...");
} catch (RuntimeException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] An exception occurred while trying to create an instance of the custom factory class: [" + trim(e.getMessage()) + "] as specified by a system property.");
throw e;
}
if (factory == null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking for a resource file of name [META-INF/services/org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...");
try {
InputStream is = getResourceAsStream(contextClassLoader, "META-INF/services/org.apache.commons.logging.LogFactory");
if (is != null) {
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
} catch (UnsupportedEncodingException e) {
bufferedReader = new BufferedReader(new InputStreamReader(is));
}
String factoryClassName = bufferedReader.readLine();
bufferedReader.close();
if (factoryClassName != null && !"".equals(factoryClassName)) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Creating an instance of LogFactory class " + factoryClassName + " as specified by file '" + "META-INF/services/org.apache.commons.logging.LogFactory" + "' which was present in the path of the context classloader.");
factory = newFactory(factoryClassName, baseClassLoader, contextClassLoader);
}
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No resource file with name 'META-INF/services/org.apache.commons.logging.LogFactory' found.");
}
} catch (Exception ex) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] A security exception occurred while trying to create an instance of the custom factory class: [" + trim(ex.getMessage()) + "]. Trying alternative implementations...");
}
}
if (factory == null)
if (props != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking in properties file for entry with key 'org.apache.commons.logging.LogFactory' to define the LogFactory subclass to use...");
String factoryClass = props.getProperty("org.apache.commons.logging.LogFactory");
if (factoryClass != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file specifies LogFactory subclass '" + factoryClass + "'");
factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] Properties file has no entry specifying LogFactory subclass.");
}
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No properties file available to determine LogFactory subclass from..");
}
if (factory == null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader).");
factory = newFactory("org.apache.commons.logging.impl.LogFactoryImpl", thisClassLoader, contextClassLoader);
}
if (factory != null) {
cacheFactory(contextClassLoader, factory);
if (props != null) {
Enumeration names = props.propertyNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
String value = props.getProperty(name);
factory.setAttribute(name, value);
}
}
}
return factory;
}
public static Log getLog(Class clazz) throws LogConfigurationException {
return getFactory().getInstance(clazz);
}
public static Log getLog(String name) throws LogConfigurationException {
return getFactory().getInstance(name);
}
public static void release(ClassLoader classLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Releasing factory for classloader " + objectId(classLoader));
Hashtable factories = LogFactory.factories;
synchronized (factories) {
if (classLoader == null) {
if (nullClassLoaderFactory != null) {
nullClassLoaderFactory.release();
nullClassLoaderFactory = null;
}
} else {
LogFactory factory = (LogFactory)factories.get(classLoader);
if (factory != null) {
factory.release();
factories.remove(classLoader);
}
}
}
}
public static void releaseAll() {
if (isDiagnosticsEnabled())
logDiagnostic("Releasing factory for all classloaders.");
Hashtable factories = LogFactory.factories;
synchronized (factories) {
Enumeration elements = factories.elements();
while (elements.hasMoreElements()) {
LogFactory element = (LogFactory)elements.nextElement();
element.release();
}
factories.clear();
if (nullClassLoaderFactory != null) {
nullClassLoaderFactory.release();
nullClassLoaderFactory = null;
}
}
}
protected static ClassLoader getClassLoader(Class clazz) {
try {
return clazz.getClassLoader();
} catch (SecurityException ex) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to get classloader for class '" + clazz + "' due to security restrictions - " + ex.getMessage());
throw ex;
}
}
protected static ClassLoader getContextClassLoader() throws LogConfigurationException {
return directGetContextClassLoader();
}
private static ClassLoader getContextClassLoaderInternal() throws LogConfigurationException {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return LogFactory.directGetContextClassLoader();
}
});
}
protected static ClassLoader directGetContextClassLoader() throws LogConfigurationException {
ClassLoader classLoader = null;
try {
classLoader = Thread.currentThread().getContextClassLoader();
} catch (SecurityException ex) {}
return classLoader;
}
private static LogFactory getCachedFactory(ClassLoader contextClassLoader) {
if (contextClassLoader == null)
return nullClassLoaderFactory;
return (LogFactory)factories.get(contextClassLoader);
}
private static void cacheFactory(ClassLoader classLoader, LogFactory factory) {
if (factory != null)
if (classLoader == null) {
nullClassLoaderFactory = factory;
} else {
factories.put(classLoader, factory);
}
}
protected static LogFactory newFactory(String factoryClass, ClassLoader classLoader, ClassLoader contextClassLoader) throws LogConfigurationException {
Object result = AccessController.doPrivileged(new PrivilegedAction(factoryClass, classLoader) {
private final String val$factoryClass;
private final ClassLoader val$classLoader;
{
this.val$factoryClass = param1String;
this.val$classLoader = param1ClassLoader;
}
public Object run() {
return LogFactory.createFactory(this.val$factoryClass, this.val$classLoader);
}
});
if (result instanceof LogConfigurationException) {
LogConfigurationException ex = (LogConfigurationException)result;
if (isDiagnosticsEnabled())
logDiagnostic("An error occurred while loading the factory class:" + ex.getMessage());
throw ex;
}
if (isDiagnosticsEnabled())
logDiagnostic("Created object " + objectId(result) + " to manage classloader " + objectId(contextClassLoader));
return (LogFactory)result;
}
protected static LogFactory newFactory(String factoryClass, ClassLoader classLoader) {
return newFactory(factoryClass, classLoader, null);
}
protected static Object createFactory(String factoryClass, ClassLoader classLoader) {
Class logFactoryClass = null;
try {
if (classLoader != null)
try {
logFactoryClass = classLoader.loadClass(factoryClass);
if (LogFactory.class.isAssignableFrom(logFactoryClass)) {
if (isDiagnosticsEnabled())
logDiagnostic("Loaded class " + logFactoryClass.getName() + " from classloader " + objectId(classLoader));
} else if (isDiagnosticsEnabled()) {
logDiagnostic("Factory class " + logFactoryClass.getName() + " loaded from classloader " + objectId(logFactoryClass.getClassLoader()) + " does not extend '" + LogFactory.class.getName() + "' as loaded by this classloader.");
logHierarchy("[BAD CL TREE] ", classLoader);
}
return logFactoryClass.newInstance();
} catch (ClassNotFoundException ex) {
if (classLoader == thisClassLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to locate any class called '" + factoryClass + "' via classloader " + objectId(classLoader));
throw ex;
}
} catch (NoClassDefFoundError e) {
if (classLoader == thisClassLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Class '" + factoryClass + "' cannot be loaded" + " via classloader " + objectId(classLoader) + " - it depends on some other class that cannot be found.");
throw e;
}
} catch (ClassCastException e) {
if (classLoader == thisClassLoader) {
boolean implementsLogFactory = implementsLogFactory(logFactoryClass);
StringBuffer msg = new StringBuffer();
msg.append("The application has specified that a custom LogFactory implementation ");
msg.append("should be used but Class '");
msg.append(factoryClass);
msg.append("' cannot be converted to '");
msg.append(LogFactory.class.getName());
msg.append("'. ");
if (implementsLogFactory) {
msg.append("The conflict is caused by the presence of multiple LogFactory classes ");
msg.append("in incompatible classloaders. ");
msg.append("Background can be found in http://commons.apache.org/logging/tech.html. ");
msg.append("If you have not explicitly specified a custom LogFactory then it is likely ");
msg.append("that the container has set one without your knowledge. ");
msg.append("In this case, consider using the commons-logging-adapters.jar file or ");
msg.append("specifying the standard LogFactory from the command line. ");
} else {
msg.append("Please check the custom implementation. ");
}
msg.append("Help can be found @http://commons.apache.org/logging/troubleshooting.html.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new ClassCastException(msg.toString());
}
}
if (isDiagnosticsEnabled())
logDiagnostic("Unable to load factory class via classloader " + objectId(classLoader) + " - trying the classloader associated with this LogFactory.");
logFactoryClass = Class.forName(factoryClass);
return logFactoryClass.newInstance();
} catch (Exception e) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to create LogFactory instance.");
if (logFactoryClass != null && !LogFactory.class.isAssignableFrom(logFactoryClass))
return new LogConfigurationException("The chosen LogFactory implementation does not extend LogFactory. Please check your configuration.", e);
return new LogConfigurationException(e);
}
}
private static boolean implementsLogFactory(Class logFactoryClass) {
boolean implementsLogFactory = false;
if (logFactoryClass != null)
try {
ClassLoader logFactoryClassLoader = logFactoryClass.getClassLoader();
if (logFactoryClassLoader == null) {
logDiagnostic("[CUSTOM LOG FACTORY] was loaded by the boot classloader");
} else {
logHierarchy("[CUSTOM LOG FACTORY] ", logFactoryClassLoader);
Class factoryFromCustomLoader = Class.forName("org.apache.commons.logging.LogFactory", false, logFactoryClassLoader);
implementsLogFactory = factoryFromCustomLoader.isAssignableFrom(logFactoryClass);
if (implementsLogFactory) {
logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName() + " implements LogFactory but was loaded by an incompatible classloader.");
} else {
logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName() + " does not implement LogFactory.");
}
}
} catch (SecurityException e) {
logDiagnostic("[CUSTOM LOG FACTORY] SecurityException thrown whilst trying to determine whether the compatibility was caused by a classloader conflict: " + e.getMessage());
} catch (LinkageError e) {
logDiagnostic("[CUSTOM LOG FACTORY] LinkageError thrown whilst trying to determine whether the compatibility was caused by a classloader conflict: " + e.getMessage());
} catch (ClassNotFoundException e) {
logDiagnostic("[CUSTOM LOG FACTORY] LogFactory class cannot be loaded by classloader which loaded the custom LogFactory implementation. Is the custom factory in the right classloader?");
}
return implementsLogFactory;
}
private static InputStream getResourceAsStream(ClassLoader loader, String name) {
return (InputStream)AccessController.doPrivileged(new PrivilegedAction(loader, name) {
private final ClassLoader val$loader;
private final String val$name;
{
this.val$loader = param1ClassLoader;
this.val$name = param1String;
}
public Object run() {
if (this.val$loader != null)
return this.val$loader.getResourceAsStream(this.val$name);
return ClassLoader.getSystemResourceAsStream(this.val$name);
}
});
}
private static Enumeration getResources(ClassLoader loader, String name) {
PrivilegedAction action = new PrivilegedAction(loader, name) {
private final ClassLoader val$loader;
private final String val$name;
{
this.val$loader = param1ClassLoader;
this.val$name = param1String;
}
public Object run() {
try {
if (this.val$loader != null)
return this.val$loader.getResources(this.val$name);
return ClassLoader.getSystemResources(this.val$name);
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Exception while trying to find configuration file " + this.val$name + ":" + e.getMessage());
return null;
} catch (NoSuchMethodError e) {
return null;
}
}
};
Object result = AccessController.doPrivileged(action);
return (Enumeration)result;
}
private static Properties getProperties(URL url) {
PrivilegedAction action = new PrivilegedAction(url) {
private final URL val$url;
{
this.val$url = param1URL;
}
public Object run() {
InputStream stream = null;
try {
URLConnection connection = this.val$url.openConnection();
connection.setUseCaches(false);
stream = connection.getInputStream();
if (stream != null) {
Properties props = new Properties();
props.load(stream);
stream.close();
stream = null;
return props;
}
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Unable to read URL " + this.val$url);
} finally {
if (stream != null)
try {
stream.close();
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Unable to close stream for URL " + this.val$url);
}
}
return null;
}
};
return (Properties)AccessController.doPrivileged(action);
}
private static final Properties getConfigurationFile(ClassLoader classLoader, String fileName) {
Properties props = null;
double priority = 0.0D;
URL propsUrl = null;
try {
Enumeration urls = getResources(classLoader, fileName);
if (urls == null)
return null;
while (urls.hasMoreElements()) {
URL url = (URL)urls.nextElement();
Properties newProps = getProperties(url);
if (newProps != null) {
if (props == null) {
propsUrl = url;
props = newProps;
String priorityStr = props.getProperty("priority");
priority = 0.0D;
if (priorityStr != null)
priority = Double.parseDouble(priorityStr);
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file found at '" + url + "'" + " with priority " + priority);
continue;
}
String newPriorityStr = newProps.getProperty("priority");
double newPriority = 0.0D;
if (newPriorityStr != null)
newPriority = Double.parseDouble(newPriorityStr);
if (newPriority > priority) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file at '" + url + "'" + " with priority " + newPriority + " overrides file at '" + propsUrl + "'" + " with priority " + priority);
propsUrl = url;
props = newProps;
priority = newPriority;
continue;
}
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file at '" + url + "'" + " with priority " + newPriority + " does not override file at '" + propsUrl + "'" + " with priority " + priority);
}
}
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("SecurityException thrown while trying to find/read config files.");
}
if (isDiagnosticsEnabled())
if (props == null) {
logDiagnostic("[LOOKUP] No properties file of name '" + fileName + "' found.");
} else {
logDiagnostic("[LOOKUP] Properties file of name '" + fileName + "' found at '" + propsUrl + '"');
}
return props;
}
private static String getSystemProperty(String key, String def) throws SecurityException {
return (String)AccessController.doPrivileged(new PrivilegedAction(key, def) {
private final String val$key;
private final String val$def;
{
this.val$key = param1String1;
this.val$def = param1String2;
}
public Object run() {
return System.getProperty(this.val$key, this.val$def);
}
});
}
private static PrintStream initDiagnostics() {
String dest;
try {
dest = getSystemProperty("org.apache.commons.logging.diagnostics.dest", null);
if (dest == null)
return null;
} catch (SecurityException ex) {
return null;
}
if (dest.equals("STDOUT"))
return System.out;
if (dest.equals("STDERR"))
return System.err;
try {
FileOutputStream fos = new FileOutputStream(dest, true);
return new PrintStream(fos);
} catch (IOException ex) {
return null;
}
}
protected static boolean isDiagnosticsEnabled() {
return (diagnosticsStream != null);
}
private static final void logDiagnostic(String msg) {
if (diagnosticsStream != null) {
diagnosticsStream.print(diagnosticPrefix);
diagnosticsStream.println(msg);
diagnosticsStream.flush();
}
}
protected static final void logRawDiagnostic(String msg) {
if (diagnosticsStream != null) {
diagnosticsStream.println(msg);
diagnosticsStream.flush();
}
}
private static void logClassLoaderEnvironment(Class clazz) {
ClassLoader classLoader;
if (!isDiagnosticsEnabled())
return;
try {
logDiagnostic("[ENV] Extension directories (java.ext.dir): " + System.getProperty("java.ext.dir"));
logDiagnostic("[ENV] Application classpath (java.class.path): " + System.getProperty("java.class.path"));
} catch (SecurityException ex) {
logDiagnostic("[ENV] Security setting prevent interrogation of system classpaths.");
}
String className = clazz.getName();
try {
classLoader = getClassLoader(clazz);
} catch (SecurityException ex) {
logDiagnostic("[ENV] Security forbids determining the classloader for " + className);
return;
}
logDiagnostic("[ENV] Class " + className + " was loaded via classloader " + objectId(classLoader));
logHierarchy("[ENV] Ancestry of classloader which loaded " + className + " is ", classLoader);
}
private static void logHierarchy(String prefix, ClassLoader classLoader) {
ClassLoader systemClassLoader;
if (!isDiagnosticsEnabled())
return;
if (classLoader != null) {
String classLoaderString = classLoader.toString();
logDiagnostic(prefix + objectId(classLoader) + " == '" + classLoaderString + "'");
}
try {
systemClassLoader = ClassLoader.getSystemClassLoader();
} catch (SecurityException ex) {
logDiagnostic(prefix + "Security forbids determining the system classloader.");
return;
}
if (classLoader != null) {
StringBuffer buf = new StringBuffer(prefix + "ClassLoader tree:");
while (true) {
buf.append(objectId(classLoader));
if (classLoader == systemClassLoader)
buf.append(" (SYSTEM) ");
try {
classLoader = classLoader.getParent();
} catch (SecurityException ex) {
buf.append(" --> SECRET");
break;
}
buf.append(" --> ");
if (classLoader == null) {
buf.append("BOOT");
break;
}
}
logDiagnostic(buf.toString());
}
}
public static String objectId(Object o) {
if (o == null)
return "null";
return o.getClass().getName() + "@" + System.identityHashCode(o);
}
private static final ClassLoader thisClassLoader = getClassLoader(LogFactory.class);
public static final String PRIORITY_KEY = "priority";
public static final String TCCL_KEY = "use_tccl";
public static final String FACTORY_PROPERTY = "org.apache.commons.logging.LogFactory";
public static final String FACTORY_DEFAULT = "org.apache.commons.logging.impl.LogFactoryImpl";
public static final String FACTORY_PROPERTIES = "commons-logging.properties";
protected static final String SERVICE_ID = "META-INF/services/org.apache.commons.logging.LogFactory";
public static final String DIAGNOSTICS_DEST_PROPERTY = "org.apache.commons.logging.diagnostics.dest";
private static final String diagnosticPrefix;
public static final String HASHTABLE_IMPLEMENTATION_PROPERTY = "org.apache.commons.logging.LogFactory.HashtableImpl";
private static final String WEAK_HASHTABLE_CLASSNAME = "org.apache.commons.logging.impl.WeakHashtable";
static {
String str;
try {
ClassLoader classLoader = thisClassLoader;
if (thisClassLoader == null) {
str = "BOOTLOADER";
} else {
str = objectId(classLoader);
}
} catch (SecurityException e) {
str = "UNKNOWN";
}
diagnosticPrefix = "[LogFactory from " + str + "] ";
diagnosticsStream = initDiagnostics();
logClassLoaderEnvironment(LogFactory.class);
factories = createFactoryStore();
if (isDiagnosticsEnabled())
logDiagnostic("BOOTSTRAP COMPLETED");
}
public abstract Object getAttribute(String paramString);
public abstract String[] getAttributeNames();
public abstract Log getInstance(Class paramClass) throws LogConfigurationException;
public abstract Log getInstance(String paramString) throws LogConfigurationException;
public abstract void release();
public abstract void removeAttribute(String paramString);
public abstract void setAttribute(String paramString, Object paramObject);
}

View file

@ -0,0 +1,104 @@
package org.apache.commons.logging;
import java.lang.reflect.Constructor;
import java.util.Hashtable;
import org.apache.commons.logging.impl.NoOpLog;
public class LogSource {
protected static Hashtable logs = new Hashtable();
protected static boolean log4jIsAvailable = false;
protected static boolean jdk14IsAvailable = false;
protected static Constructor logImplctor = null;
static {
try {
log4jIsAvailable = (null != Class.forName("org.apache.log4j.Logger"));
} catch (Throwable t) {
log4jIsAvailable = false;
}
try {
jdk14IsAvailable = (null != Class.forName("java.util.logging.Logger") && null != Class.forName("org.apache.commons.logging.impl.Jdk14Logger"));
} catch (Throwable t) {
jdk14IsAvailable = false;
}
String name = null;
try {
name = System.getProperty("org.apache.commons.logging.log");
if (name == null)
name = System.getProperty("org.apache.commons.logging.Log");
} catch (Throwable t) {}
if (name != null) {
try {
setLogImplementation(name);
} catch (Throwable t) {
try {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
} catch (Throwable u) {}
}
} else {
try {
if (log4jIsAvailable) {
setLogImplementation("org.apache.commons.logging.impl.Log4JLogger");
} else if (jdk14IsAvailable) {
setLogImplementation("org.apache.commons.logging.impl.Jdk14Logger");
} else {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
}
} catch (Throwable t) {
try {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
} catch (Throwable u) {}
}
}
}
public static void setLogImplementation(String classname) throws LinkageError, NoSuchMethodException, SecurityException, ClassNotFoundException {
try {
Class logclass = Class.forName(classname);
Class[] argtypes = new Class[1];
argtypes[0] = "".getClass();
logImplctor = logclass.getConstructor(argtypes);
} catch (Throwable t) {
logImplctor = null;
}
}
public static void setLogImplementation(Class logclass) throws LinkageError, ExceptionInInitializerError, NoSuchMethodException, SecurityException {
Class[] argtypes = new Class[1];
argtypes[0] = "".getClass();
logImplctor = logclass.getConstructor(argtypes);
}
public static Log getInstance(String name) {
Log log = (Log)logs.get(name);
if (null == log) {
log = makeNewLogInstance(name);
logs.put(name, log);
}
return log;
}
public static Log getInstance(Class clazz) {
return getInstance(clazz.getName());
}
public static Log makeNewLogInstance(String name) {
NoOpLog noOpLog;
try {
Object[] args = { name };
noOpLog = (NoOpLog)logImplctor.newInstance(args);
} catch (Throwable t) {
noOpLog = null;
}
if (null == noOpLog)
noOpLog = new NoOpLog(name);
return noOpLog;
}
public static String[] getLogNames() {
return (String[])logs.keySet().toArray(new String[logs.size()]);
}
}

View file

@ -0,0 +1,112 @@
package org.apache.commons.logging.impl;
import org.apache.avalon.framework.logger.Logger;
import org.apache.commons.logging.Log;
public class AvalonLogger implements Log {
private static volatile Logger defaultLogger = null;
private final transient Logger logger;
public AvalonLogger(Logger logger) {
this.logger = logger;
}
public AvalonLogger(String name) {
if (defaultLogger == null)
throw new NullPointerException("default logger has to be specified if this constructor is used!");
this.logger = defaultLogger.getChildLogger(name);
}
public Logger getLogger() {
return this.logger;
}
public static void setDefaultLogger(Logger logger) {
defaultLogger = logger;
}
public void debug(Object message, Throwable t) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message), t);
}
public void debug(Object message) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message));
}
public void error(Object message, Throwable t) {
if (getLogger().isErrorEnabled())
getLogger().error(String.valueOf(message), t);
}
public void error(Object message) {
if (getLogger().isErrorEnabled())
getLogger().error(String.valueOf(message));
}
public void fatal(Object message, Throwable t) {
if (getLogger().isFatalErrorEnabled())
getLogger().fatalError(String.valueOf(message), t);
}
public void fatal(Object message) {
if (getLogger().isFatalErrorEnabled())
getLogger().fatalError(String.valueOf(message));
}
public void info(Object message, Throwable t) {
if (getLogger().isInfoEnabled())
getLogger().info(String.valueOf(message), t);
}
public void info(Object message) {
if (getLogger().isInfoEnabled())
getLogger().info(String.valueOf(message));
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isErrorEnabled();
}
public boolean isFatalEnabled() {
return getLogger().isFatalErrorEnabled();
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isWarnEnabled() {
return getLogger().isWarnEnabled();
}
public void trace(Object message, Throwable t) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message), t);
}
public void trace(Object message) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message));
}
public void warn(Object message, Throwable t) {
if (getLogger().isWarnEnabled())
getLogger().warn(String.valueOf(message), t);
}
public void warn(Object message) {
if (getLogger().isWarnEnabled())
getLogger().warn(String.valueOf(message));
}
}

View file

@ -0,0 +1,147 @@
package org.apache.commons.logging.impl;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.apache.commons.logging.Log;
public class Jdk13LumberjackLogger implements Log, Serializable {
private static final long serialVersionUID = -8649807923527610591L;
protected transient Logger logger = null;
protected String name = null;
private String sourceClassName = "unknown";
private String sourceMethodName = "unknown";
private boolean classAndMethodFound = false;
protected static final Level dummyLevel = Level.FINE;
public Jdk13LumberjackLogger(String name) {
this.name = name;
this.logger = getLogger();
}
private void log(Level level, String msg, Throwable ex) {
if (getLogger().isLoggable(level)) {
LogRecord record = new LogRecord(level, msg);
if (!this.classAndMethodFound)
getClassAndMethod();
record.setSourceClassName(this.sourceClassName);
record.setSourceMethodName(this.sourceMethodName);
if (ex != null)
record.setThrown(ex);
getLogger().log(record);
}
}
private void getClassAndMethod() {
try {
Throwable throwable = new Throwable();
throwable.fillInStackTrace();
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
throwable.printStackTrace(printWriter);
String traceString = stringWriter.getBuffer().toString();
StringTokenizer tokenizer = new StringTokenizer(traceString, "\n");
tokenizer.nextToken();
String line = tokenizer.nextToken();
while (line.indexOf(getClass().getName()) == -1)
line = tokenizer.nextToken();
while (line.indexOf(getClass().getName()) >= 0)
line = tokenizer.nextToken();
int start = line.indexOf("at ") + 3;
int end = line.indexOf('(');
String temp = line.substring(start, end);
int lastPeriod = temp.lastIndexOf('.');
this.sourceClassName = temp.substring(0, lastPeriod);
this.sourceMethodName = temp.substring(lastPeriod + 1);
} catch (Exception ex) {}
this.classAndMethodFound = true;
}
public void debug(Object message) {
log(Level.FINE, String.valueOf(message), null);
}
public void debug(Object message, Throwable exception) {
log(Level.FINE, String.valueOf(message), exception);
}
public void error(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void error(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public void fatal(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void fatal(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public Logger getLogger() {
if (this.logger == null)
this.logger = Logger.getLogger(this.name);
return this.logger;
}
public void info(Object message) {
log(Level.INFO, String.valueOf(message), null);
}
public void info(Object message, Throwable exception) {
log(Level.INFO, String.valueOf(message), exception);
}
public boolean isDebugEnabled() {
return getLogger().isLoggable(Level.FINE);
}
public boolean isErrorEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isFatalEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isInfoEnabled() {
return getLogger().isLoggable(Level.INFO);
}
public boolean isTraceEnabled() {
return getLogger().isLoggable(Level.FINEST);
}
public boolean isWarnEnabled() {
return getLogger().isLoggable(Level.WARNING);
}
public void trace(Object message) {
log(Level.FINEST, String.valueOf(message), null);
}
public void trace(Object message, Throwable exception) {
log(Level.FINEST, String.valueOf(message), exception);
}
public void warn(Object message) {
log(Level.WARNING, String.valueOf(message), null);
}
public void warn(Object message, Throwable exception) {
log(Level.WARNING, String.valueOf(message), exception);
}
}

View file

@ -0,0 +1,118 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.logging.Log;
public class Jdk14Logger implements Log, Serializable {
private static final long serialVersionUID = 4784713551416303804L;
protected static final Level dummyLevel = Level.FINE;
public Jdk14Logger(String name) {
this.name = name;
this.logger = getLogger();
}
protected transient Logger logger = null;
protected String name = null;
protected void log(Level level, String msg, Throwable ex) {
Logger logger = getLogger();
if (logger.isLoggable(level)) {
Throwable dummyException = new Throwable();
StackTraceElement[] locations = dummyException.getStackTrace();
String cname = this.name;
String method = "unknown";
if (locations != null && locations.length > 2) {
StackTraceElement caller = locations[2];
method = caller.getMethodName();
}
if (ex == null) {
logger.logp(level, cname, method, msg);
} else {
logger.logp(level, cname, method, msg, ex);
}
}
}
public void debug(Object message) {
log(Level.FINE, String.valueOf(message), null);
}
public void debug(Object message, Throwable exception) {
log(Level.FINE, String.valueOf(message), exception);
}
public void error(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void error(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public void fatal(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void fatal(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public Logger getLogger() {
if (this.logger == null)
this.logger = Logger.getLogger(this.name);
return this.logger;
}
public void info(Object message) {
log(Level.INFO, String.valueOf(message), null);
}
public void info(Object message, Throwable exception) {
log(Level.INFO, String.valueOf(message), exception);
}
public boolean isDebugEnabled() {
return getLogger().isLoggable(Level.FINE);
}
public boolean isErrorEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isFatalEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isInfoEnabled() {
return getLogger().isLoggable(Level.INFO);
}
public boolean isTraceEnabled() {
return getLogger().isLoggable(Level.FINEST);
}
public boolean isWarnEnabled() {
return getLogger().isLoggable(Level.WARNING);
}
public void trace(Object message) {
log(Level.FINEST, String.valueOf(message), null);
}
public void trace(Object message, Throwable exception) {
log(Level.FINEST, String.valueOf(message), exception);
}
public void warn(Object message) {
log(Level.WARNING, String.valueOf(message), null);
}
public void warn(Object message, Throwable exception) {
log(Level.WARNING, String.valueOf(message), exception);
}
}

View file

@ -0,0 +1,130 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
public class Log4JLogger implements Log, Serializable {
private static final long serialVersionUID = 5160705895411730424L;
private static final String FQCN = Log4JLogger.class.getName();
private volatile transient Logger logger = null;
private final String name;
private static final Priority traceLevel;
static {
Level level;
if (!Priority.class.isAssignableFrom(Level.class))
throw new InstantiationError("Log4J 1.2 not available");
try {
Priority _traceLevel = (Priority)Level.class.getDeclaredField("TRACE").get(null);
} catch (Exception ex) {
level = Level.DEBUG;
}
traceLevel = (Priority)level;
}
public Log4JLogger() {
this.name = null;
}
public Log4JLogger(String name) {
this.name = name;
this.logger = getLogger();
}
public Log4JLogger(Logger logger) {
if (logger == null)
throw new IllegalArgumentException("Warning - null logger in constructor; possible log4j misconfiguration.");
this.name = logger.getName();
this.logger = logger;
}
public void trace(Object message) {
getLogger().log(FQCN, traceLevel, message, null);
}
public void trace(Object message, Throwable t) {
getLogger().log(FQCN, traceLevel, message, t);
}
public void debug(Object message) {
getLogger().log(FQCN, (Priority)Level.DEBUG, message, null);
}
public void debug(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.DEBUG, message, t);
}
public void info(Object message) {
getLogger().log(FQCN, (Priority)Level.INFO, message, null);
}
public void info(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.INFO, message, t);
}
public void warn(Object message) {
getLogger().log(FQCN, (Priority)Level.WARN, message, null);
}
public void warn(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.WARN, message, t);
}
public void error(Object message) {
getLogger().log(FQCN, (Priority)Level.ERROR, message, null);
}
public void error(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.ERROR, message, t);
}
public void fatal(Object message) {
getLogger().log(FQCN, (Priority)Level.FATAL, message, null);
}
public void fatal(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.FATAL, message, t);
}
public Logger getLogger() {
Logger result = this.logger;
if (result == null)
synchronized (this) {
result = this.logger;
if (result == null)
this.logger = result = Logger.getLogger(this.name);
}
return result;
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isEnabledFor((Priority)Level.ERROR);
}
public boolean isFatalEnabled() {
return getLogger().isEnabledFor((Priority)Level.FATAL);
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isEnabledFor(traceLevel);
}
public boolean isWarnEnabled() {
return getLogger().isEnabledFor((Priority)Level.WARN);
}
}

View file

@ -0,0 +1,587 @@
package org.apache.commons.logging.impl;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Hashtable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
import org.apache.commons.logging.LogFactory;
public class LogFactoryImpl extends LogFactory {
private static final String LOGGING_IMPL_LOG4J_LOGGER = "org.apache.commons.logging.impl.Log4JLogger";
private static final String LOGGING_IMPL_JDK14_LOGGER = "org.apache.commons.logging.impl.Jdk14Logger";
private static final String LOGGING_IMPL_LUMBERJACK_LOGGER = "org.apache.commons.logging.impl.Jdk13LumberjackLogger";
private static final String LOGGING_IMPL_SIMPLE_LOGGER = "org.apache.commons.logging.impl.SimpleLog";
private static final String PKG_IMPL = "org.apache.commons.logging.impl.";
private static final int PKG_LEN = "org.apache.commons.logging.impl.".length();
public static final String LOG_PROPERTY = "org.apache.commons.logging.Log";
protected static final String LOG_PROPERTY_OLD = "org.apache.commons.logging.log";
public static final String ALLOW_FLAWED_CONTEXT_PROPERTY = "org.apache.commons.logging.Log.allowFlawedContext";
public static final String ALLOW_FLAWED_DISCOVERY_PROPERTY = "org.apache.commons.logging.Log.allowFlawedDiscovery";
public static final String ALLOW_FLAWED_HIERARCHY_PROPERTY = "org.apache.commons.logging.Log.allowFlawedHierarchy";
public LogFactoryImpl() {
initDiagnostics();
if (isDiagnosticsEnabled())
logDiagnostic("Instance created.");
}
private static final String[] classesToDiscover = new String[] { "org.apache.commons.logging.impl.Log4JLogger", "org.apache.commons.logging.impl.Jdk14Logger", "org.apache.commons.logging.impl.Jdk13LumberjackLogger", "org.apache.commons.logging.impl.SimpleLog" };
private boolean useTCCL = true;
private String diagnosticPrefix;
protected Hashtable attributes = new Hashtable();
protected Hashtable instances = new Hashtable();
private String logClassName;
protected Constructor logConstructor = null;
protected Class[] logConstructorSignature = new Class[] { String.class };
protected Method logMethod = null;
protected Class[] logMethodSignature = new Class[] { LogFactory.class };
private boolean allowFlawedContext;
private boolean allowFlawedDiscovery;
private boolean allowFlawedHierarchy;
public Object getAttribute(String name) {
return this.attributes.get(name);
}
public String[] getAttributeNames() {
return (String[])this.attributes.keySet().toArray(new String[this.attributes.size()]);
}
public Log getInstance(Class clazz) throws LogConfigurationException {
return getInstance(clazz.getName());
}
public Log getInstance(String name) throws LogConfigurationException {
Log instance = (Log)this.instances.get(name);
if (instance == null) {
instance = newInstance(name);
this.instances.put(name, instance);
}
return instance;
}
public void release() {
logDiagnostic("Releasing all known loggers");
this.instances.clear();
}
public void removeAttribute(String name) {
this.attributes.remove(name);
}
public void setAttribute(String name, Object value) {
if (this.logConstructor != null)
logDiagnostic("setAttribute: call too late; configuration already performed.");
if (value == null) {
this.attributes.remove(name);
} else {
this.attributes.put(name, value);
}
if (name.equals("use_tccl"))
this.useTCCL = (value != null && Boolean.valueOf(value.toString()).booleanValue());
}
protected static ClassLoader getContextClassLoader() throws LogConfigurationException {
return LogFactory.getContextClassLoader();
}
protected static boolean isDiagnosticsEnabled() {
return LogFactory.isDiagnosticsEnabled();
}
protected static ClassLoader getClassLoader(Class clazz) {
return LogFactory.getClassLoader(clazz);
}
private void initDiagnostics() {
String str;
Class clazz = getClass();
ClassLoader classLoader = getClassLoader(clazz);
try {
if (classLoader == null) {
str = "BOOTLOADER";
} else {
str = objectId(classLoader);
}
} catch (SecurityException e) {
str = "UNKNOWN";
}
this.diagnosticPrefix = "[LogFactoryImpl@" + System.identityHashCode(this) + " from " + str + "] ";
}
protected void logDiagnostic(String msg) {
if (isDiagnosticsEnabled())
logRawDiagnostic(this.diagnosticPrefix + msg);
}
protected String getLogClassName() {
if (this.logClassName == null)
discoverLogImplementation(getClass().getName());
return this.logClassName;
}
protected Constructor getLogConstructor() throws LogConfigurationException {
if (this.logConstructor == null)
discoverLogImplementation(getClass().getName());
return this.logConstructor;
}
protected boolean isJdk13LumberjackAvailable() {
return isLogLibraryAvailable("Jdk13Lumberjack", "org.apache.commons.logging.impl.Jdk13LumberjackLogger");
}
protected boolean isJdk14Available() {
return isLogLibraryAvailable("Jdk14", "org.apache.commons.logging.impl.Jdk14Logger");
}
protected boolean isLog4JAvailable() {
return isLogLibraryAvailable("Log4J", "org.apache.commons.logging.impl.Log4JLogger");
}
protected Log newInstance(String name) throws LogConfigurationException {
try {
Log instance;
if (this.logConstructor == null) {
instance = discoverLogImplementation(name);
} else {
Object[] params = { name };
instance = (Log)this.logConstructor.newInstance(params);
}
if (this.logMethod != null) {
Object[] params = { this };
this.logMethod.invoke(instance, params);
}
return instance;
} catch (LogConfigurationException lce) {
throw lce;
} catch (InvocationTargetException e) {
Throwable c = e.getTargetException();
throw new LogConfigurationException((c == null) ? e : c);
} catch (Throwable t) {
handleThrowable(t);
throw new LogConfigurationException(t);
}
}
private static ClassLoader getContextClassLoaderInternal() throws LogConfigurationException {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return LogFactoryImpl.directGetContextClassLoader();
}
});
}
private static String getSystemProperty(String key, String def) throws SecurityException {
return (String)AccessController.doPrivileged(new PrivilegedAction(key, def) {
private final String val$key;
private final String val$def;
{
this.val$key = param1String1;
this.val$def = param1String2;
}
public Object run() {
return System.getProperty(this.val$key, this.val$def);
}
});
}
private ClassLoader getParentClassLoader(ClassLoader cl) {
try {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction(this, cl) {
private final ClassLoader val$cl;
private final LogFactoryImpl this$0;
{
this.this$0 = this$0;
this.val$cl = param1ClassLoader;
}
public Object run() {
return this.val$cl.getParent();
}
});
} catch (SecurityException ex) {
logDiagnostic("[SECURITY] Unable to obtain parent classloader");
return null;
}
}
private boolean isLogLibraryAvailable(String name, String classname) {
if (isDiagnosticsEnabled())
logDiagnostic("Checking for '" + name + "'.");
try {
Log log = createLogFromClass(classname, getClass().getName(), false);
if (log == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Did not find '" + name + "'.");
return false;
}
if (isDiagnosticsEnabled())
logDiagnostic("Found '" + name + "'.");
return true;
} catch (LogConfigurationException e) {
if (isDiagnosticsEnabled())
logDiagnostic("Logging system '" + name + "' is available but not useable.");
return false;
}
}
private String getConfigurationValue(String property) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Trying to get configuration for item " + property);
Object valueObj = getAttribute(property);
if (valueObj != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Found LogFactory attribute [" + valueObj + "] for " + property);
return valueObj.toString();
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No LogFactory attribute found for " + property);
try {
String value = getSystemProperty(property, null);
if (value != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Found system property [" + value + "] for " + property);
return value;
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No system property found for property " + property);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Security prevented reading system property " + property);
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No configuration defined for item " + property);
return null;
}
private boolean getBooleanConfiguration(String key, boolean dflt) {
String val = getConfigurationValue(key);
if (val == null)
return dflt;
return Boolean.valueOf(val).booleanValue();
}
private void initConfiguration() {
this.allowFlawedContext = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedContext", true);
this.allowFlawedDiscovery = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedDiscovery", true);
this.allowFlawedHierarchy = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedHierarchy", true);
}
private Log discoverLogImplementation(String logCategory) throws LogConfigurationException {
if (isDiagnosticsEnabled())
logDiagnostic("Discovering a Log implementation...");
initConfiguration();
Log result = null;
String specifiedLogClassName = findUserSpecifiedLogClassName();
if (specifiedLogClassName != null) {
if (isDiagnosticsEnabled())
logDiagnostic("Attempting to load user-specified log class '" + specifiedLogClassName + "'...");
result = createLogFromClass(specifiedLogClassName, logCategory, true);
if (result == null) {
StringBuffer messageBuffer = new StringBuffer("User-specified log class '");
messageBuffer.append(specifiedLogClassName);
messageBuffer.append("' cannot be found or is not useable.");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Log4JLogger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Jdk14Logger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Jdk13LumberjackLogger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.SimpleLog");
throw new LogConfigurationException(messageBuffer.toString());
}
return result;
}
if (isDiagnosticsEnabled())
logDiagnostic("No user-specified Log implementation; performing discovery using the standard supported logging implementations...");
for (int i = 0; i < classesToDiscover.length && result == null; i++)
result = createLogFromClass(classesToDiscover[i], logCategory, true);
if (result == null)
throw new LogConfigurationException("No suitable Log implementation");
return result;
}
private void informUponSimilarName(StringBuffer messageBuffer, String name, String candidate) {
if (name.equals(candidate))
return;
if (name.regionMatches(true, 0, candidate, 0, PKG_LEN + 5)) {
messageBuffer.append(" Did you mean '");
messageBuffer.append(candidate);
messageBuffer.append("'?");
}
}
private String findUserSpecifiedLogClassName() {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from attribute 'org.apache.commons.logging.Log'");
String specifiedClass = (String)getAttribute("org.apache.commons.logging.Log");
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from attribute 'org.apache.commons.logging.log'");
specifiedClass = (String)getAttribute("org.apache.commons.logging.log");
}
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from system property 'org.apache.commons.logging.Log'");
try {
specifiedClass = getSystemProperty("org.apache.commons.logging.Log", null);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("No access allowed to system property 'org.apache.commons.logging.Log' - " + e.getMessage());
}
}
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from system property 'org.apache.commons.logging.log'");
try {
specifiedClass = getSystemProperty("org.apache.commons.logging.log", null);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("No access allowed to system property 'org.apache.commons.logging.log' - " + e.getMessage());
}
}
if (specifiedClass != null)
specifiedClass = specifiedClass.trim();
return specifiedClass;
}
private Log createLogFromClass(String logAdapterClassName, String logCategory, boolean affectState) throws LogConfigurationException {
if (isDiagnosticsEnabled())
logDiagnostic("Attempting to instantiate '" + logAdapterClassName + "'");
Object[] params = { logCategory };
Log logAdapter = null;
Constructor constructor = null;
Class logAdapterClass = null;
ClassLoader currentCL = getBaseClassLoader();
while (true) {
logDiagnostic("Trying to load '" + logAdapterClassName + "' from classloader " + objectId(currentCL));
try {
Class clazz;
if (isDiagnosticsEnabled()) {
URL url;
String resourceName = logAdapterClassName.replace('.', '/') + ".class";
if (currentCL != null) {
url = currentCL.getResource(resourceName);
} else {
url = ClassLoader.getSystemResource(resourceName + ".class");
}
if (url == null) {
logDiagnostic("Class '" + logAdapterClassName + "' [" + resourceName + "] cannot be found.");
} else {
logDiagnostic("Class '" + logAdapterClassName + "' was found at '" + url + "'");
}
}
try {
clazz = Class.forName(logAdapterClassName, true, currentCL);
} catch (ClassNotFoundException originalClassNotFoundException) {
String msg = originalClassNotFoundException.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is not available via classloader " + objectId(currentCL) + ": " + msg.trim());
try {
clazz = Class.forName(logAdapterClassName);
} catch (ClassNotFoundException secondaryClassNotFoundException) {
msg = secondaryClassNotFoundException.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is not available via the LogFactoryImpl class classloader: " + msg.trim());
break;
}
}
constructor = clazz.getConstructor(this.logConstructorSignature);
Object o = constructor.newInstance(params);
if (o instanceof Log) {
logAdapterClass = clazz;
logAdapter = (Log)o;
break;
}
handleFlawedHierarchy(currentCL, clazz);
} catch (NoClassDefFoundError e) {
String msg = e.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is missing dependencies when loaded via classloader " + objectId(currentCL) + ": " + msg.trim());
break;
} catch (ExceptionInInitializerError e) {
String msg = e.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is unable to initialize itself when loaded via classloader " + objectId(currentCL) + ": " + msg.trim());
break;
} catch (LogConfigurationException e) {
throw e;
} catch (Throwable t) {
handleThrowable(t);
handleFlawedDiscovery(logAdapterClassName, currentCL, t);
}
if (currentCL == null)
break;
currentCL = getParentClassLoader(currentCL);
}
if (logAdapterClass != null && affectState) {
this.logClassName = logAdapterClassName;
this.logConstructor = constructor;
try {
this.logMethod = logAdapterClass.getMethod("setLogFactory", this.logMethodSignature);
logDiagnostic("Found method setLogFactory(LogFactory) in '" + logAdapterClassName + "'");
} catch (Throwable t) {
handleThrowable(t);
this.logMethod = null;
logDiagnostic("[INFO] '" + logAdapterClassName + "' from classloader " + objectId(currentCL) + " does not declare optional method " + "setLogFactory(LogFactory)");
}
logDiagnostic("Log adapter '" + logAdapterClassName + "' from classloader " + objectId(logAdapterClass.getClassLoader()) + " has been selected for use.");
}
return logAdapter;
}
private ClassLoader getBaseClassLoader() throws LogConfigurationException {
ClassLoader thisClassLoader = getClassLoader(LogFactoryImpl.class);
if (!this.useTCCL)
return thisClassLoader;
ClassLoader contextClassLoader = getContextClassLoaderInternal();
ClassLoader baseClassLoader = getLowestClassLoader(contextClassLoader, thisClassLoader);
if (baseClassLoader == null) {
if (this.allowFlawedContext) {
if (isDiagnosticsEnabled())
logDiagnostic("[WARNING] the context classloader is not part of a parent-child relationship with the classloader that loaded LogFactoryImpl.");
return contextClassLoader;
}
throw new LogConfigurationException("Bad classloader hierarchy; LogFactoryImpl was loaded via a classloader that is not related to the current context classloader.");
}
if (baseClassLoader != contextClassLoader)
if (this.allowFlawedContext) {
if (isDiagnosticsEnabled())
logDiagnostic("Warning: the context classloader is an ancestor of the classloader that loaded LogFactoryImpl; it should be the same or a descendant. The application using commons-logging should ensure the context classloader is used correctly.");
} else {
throw new LogConfigurationException("Bad classloader hierarchy; LogFactoryImpl was loaded via a classloader that is not related to the current context classloader.");
}
return baseClassLoader;
}
private ClassLoader getLowestClassLoader(ClassLoader c1, ClassLoader c2) {
if (c1 == null)
return c2;
if (c2 == null)
return c1;
ClassLoader current = c1;
while (current != null) {
if (current == c2)
return c1;
current = getParentClassLoader(current);
}
current = c2;
while (current != null) {
if (current == c1)
return c2;
current = getParentClassLoader(current);
}
return null;
}
private void handleFlawedDiscovery(String logAdapterClassName, ClassLoader classLoader, Throwable discoveryFlaw) {
if (isDiagnosticsEnabled()) {
logDiagnostic("Could not instantiate Log '" + logAdapterClassName + "' -- " + discoveryFlaw.getClass().getName() + ": " + discoveryFlaw.getLocalizedMessage());
if (discoveryFlaw instanceof InvocationTargetException) {
InvocationTargetException ite = (InvocationTargetException)discoveryFlaw;
Throwable cause = ite.getTargetException();
if (cause != null) {
logDiagnostic("... InvocationTargetException: " + cause.getClass().getName() + ": " + cause.getLocalizedMessage());
if (cause instanceof ExceptionInInitializerError) {
ExceptionInInitializerError eiie = (ExceptionInInitializerError)cause;
Throwable cause2 = eiie.getException();
if (cause2 != null) {
StringWriter sw = new StringWriter();
cause2.printStackTrace(new PrintWriter((Writer)sw, true));
logDiagnostic("... ExceptionInInitializerError: " + sw.toString());
}
}
}
}
}
if (!this.allowFlawedDiscovery)
throw new LogConfigurationException(discoveryFlaw);
}
private void handleFlawedHierarchy(ClassLoader badClassLoader, Class badClass) throws LogConfigurationException {
boolean implementsLog = false;
String logInterfaceName = Log.class.getName();
Class[] interfaces = badClass.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
if (logInterfaceName.equals(interfaces[i].getName())) {
implementsLog = true;
break;
}
}
if (implementsLog) {
if (isDiagnosticsEnabled())
try {
ClassLoader logInterfaceClassLoader = getClassLoader(Log.class);
logDiagnostic("Class '" + badClass.getName() + "' was found in classloader " + objectId(badClassLoader) + ". It is bound to a Log interface which is not" + " the one loaded from classloader " + objectId(logInterfaceClassLoader));
} catch (Throwable t) {
handleThrowable(t);
logDiagnostic("Error while trying to output diagnostics about bad class '" + badClass + "'");
}
if (!this.allowFlawedHierarchy) {
StringBuffer msg = new StringBuffer();
msg.append("Terminating logging for this context ");
msg.append("due to bad log hierarchy. ");
msg.append("You have more than one version of '");
msg.append(Log.class.getName());
msg.append("' visible.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new LogConfigurationException(msg.toString());
}
if (isDiagnosticsEnabled()) {
StringBuffer msg = new StringBuffer();
msg.append("Warning: bad log hierarchy. ");
msg.append("You have more than one version of '");
msg.append(Log.class.getName());
msg.append("' visible.");
logDiagnostic(msg.toString());
}
} else {
if (!this.allowFlawedDiscovery) {
StringBuffer msg = new StringBuffer();
msg.append("Terminating logging for this context. ");
msg.append("Log class '");
msg.append(badClass.getName());
msg.append("' does not implement the Log interface.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new LogConfigurationException(msg.toString());
}
if (isDiagnosticsEnabled()) {
StringBuffer msg = new StringBuffer();
msg.append("[WARNING] Log class '");
msg.append(badClass.getName());
msg.append("' does not implement the Log interface.");
logDiagnostic(msg.toString());
}
}
}
}

View file

@ -0,0 +1,112 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
public class LogKitLogger implements Log, Serializable {
private static final long serialVersionUID = 3768538055836059519L;
protected volatile transient Logger logger = null;
protected String name = null;
public LogKitLogger(String name) {
this.name = name;
this.logger = getLogger();
}
public Logger getLogger() {
Logger result = this.logger;
if (result == null)
synchronized (this) {
result = this.logger;
if (result == null)
this.logger = result = Hierarchy.getDefaultHierarchy().getLoggerFor(this.name);
}
return result;
}
public void trace(Object message) {
debug(message);
}
public void trace(Object message, Throwable t) {
debug(message, t);
}
public void debug(Object message) {
if (message != null)
getLogger().debug(String.valueOf(message));
}
public void debug(Object message, Throwable t) {
if (message != null)
getLogger().debug(String.valueOf(message), t);
}
public void info(Object message) {
if (message != null)
getLogger().info(String.valueOf(message));
}
public void info(Object message, Throwable t) {
if (message != null)
getLogger().info(String.valueOf(message), t);
}
public void warn(Object message) {
if (message != null)
getLogger().warn(String.valueOf(message));
}
public void warn(Object message, Throwable t) {
if (message != null)
getLogger().warn(String.valueOf(message), t);
}
public void error(Object message) {
if (message != null)
getLogger().error(String.valueOf(message));
}
public void error(Object message, Throwable t) {
if (message != null)
getLogger().error(String.valueOf(message), t);
}
public void fatal(Object message) {
if (message != null)
getLogger().fatalError(String.valueOf(message));
}
public void fatal(Object message, Throwable t) {
if (message != null)
getLogger().fatalError(String.valueOf(message), t);
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isErrorEnabled();
}
public boolean isFatalEnabled() {
return getLogger().isFatalErrorEnabled();
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isWarnEnabled() {
return getLogger().isWarnEnabled();
}
}

View file

@ -0,0 +1,60 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
public class NoOpLog implements Log, Serializable {
private static final long serialVersionUID = 561423906191706148L;
public NoOpLog() {}
public NoOpLog(String name) {}
public void trace(Object message) {}
public void trace(Object message, Throwable t) {}
public void debug(Object message) {}
public void debug(Object message, Throwable t) {}
public void info(Object message) {}
public void info(Object message, Throwable t) {}
public void warn(Object message) {}
public void warn(Object message, Throwable t) {}
public void error(Object message) {}
public void error(Object message, Throwable t) {}
public void fatal(Object message) {}
public void fatal(Object message, Throwable t) {}
public final boolean isDebugEnabled() {
return false;
}
public final boolean isErrorEnabled() {
return false;
}
public final boolean isFatalEnabled() {
return false;
}
public final boolean isInfoEnabled() {
return false;
}
public final boolean isTraceEnabled() {
return false;
}
public final boolean isWarnEnabled() {
return false;
}
}

View file

@ -0,0 +1,40 @@
package org.apache.commons.logging.impl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.LogFactory;
public class ServletContextCleaner implements ServletContextListener {
private static final Class[] RELEASE_SIGNATURE = new Class[] { ClassLoader.class };
public void contextDestroyed(ServletContextEvent sce) {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
Object[] params = new Object[1];
params[0] = tccl;
ClassLoader loader = tccl;
while (loader != null) {
try {
Class logFactoryClass = loader.loadClass("org.apache.commons.logging.LogFactory");
Method releaseMethod = logFactoryClass.getMethod("release", RELEASE_SIGNATURE);
releaseMethod.invoke(null, params);
loader = logFactoryClass.getClassLoader().getParent();
} catch (ClassNotFoundException ex) {
loader = null;
} catch (NoSuchMethodException ex) {
System.err.println("LogFactory instance found which does not support release method!");
loader = null;
} catch (IllegalAccessException ex) {
System.err.println("LogFactory instance found which is not accessable!");
loader = null;
} catch (InvocationTargetException ex) {
System.err.println("LogFactory instance release method failed!");
loader = null;
}
}
LogFactory.release(tccl);
}
public void contextInitialized(ServletContextEvent sce) {}
}

View file

@ -0,0 +1,318 @@
package org.apache.commons.logging.impl;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
public class SimpleLog implements Log, Serializable {
private static final long serialVersionUID = 136942970684951178L;
protected static final String systemPrefix = "org.apache.commons.logging.simplelog.";
protected static final Properties simpleLogProps = new Properties();
protected static final String DEFAULT_DATE_TIME_FORMAT = "yyyy/MM/dd HH:mm:ss:SSS zzz";
protected static volatile boolean showLogName = false;
protected static volatile boolean showShortName = true;
protected static volatile boolean showDateTime = false;
protected static volatile String dateTimeFormat = "yyyy/MM/dd HH:mm:ss:SSS zzz";
protected static DateFormat dateFormatter = null;
public static final int LOG_LEVEL_TRACE = 1;
public static final int LOG_LEVEL_DEBUG = 2;
public static final int LOG_LEVEL_INFO = 3;
public static final int LOG_LEVEL_WARN = 4;
public static final int LOG_LEVEL_ERROR = 5;
public static final int LOG_LEVEL_FATAL = 6;
public static final int LOG_LEVEL_ALL = 0;
public static final int LOG_LEVEL_OFF = 7;
private static String getStringProperty(String name) {
String prop = null;
try {
prop = System.getProperty(name);
} catch (SecurityException e) {}
return (prop == null) ? simpleLogProps.getProperty(name) : prop;
}
private static String getStringProperty(String name, String dephault) {
String prop = getStringProperty(name);
return (prop == null) ? dephault : prop;
}
private static boolean getBooleanProperty(String name, boolean dephault) {
String prop = getStringProperty(name);
return (prop == null) ? dephault : "true".equalsIgnoreCase(prop);
}
static {
InputStream in = getResourceAsStream("simplelog.properties");
if (null != in)
try {
simpleLogProps.load(in);
in.close();
} catch (IOException e) {}
showLogName = getBooleanProperty("org.apache.commons.logging.simplelog.showlogname", showLogName);
showShortName = getBooleanProperty("org.apache.commons.logging.simplelog.showShortLogname", showShortName);
showDateTime = getBooleanProperty("org.apache.commons.logging.simplelog.showdatetime", showDateTime);
if (showDateTime) {
dateTimeFormat = getStringProperty("org.apache.commons.logging.simplelog.dateTimeFormat", dateTimeFormat);
try {
dateFormatter = new SimpleDateFormat(dateTimeFormat);
} catch (IllegalArgumentException e) {
dateTimeFormat = "yyyy/MM/dd HH:mm:ss:SSS zzz";
dateFormatter = new SimpleDateFormat(dateTimeFormat);
}
}
}
protected volatile String logName = null;
protected volatile int currentLogLevel;
private volatile String shortLogName = null;
public SimpleLog(String name) {
this.logName = name;
setLevel(3);
String lvl = getStringProperty("org.apache.commons.logging.simplelog.log." + this.logName);
int i = String.valueOf(name).lastIndexOf(".");
while (null == lvl && i > -1) {
name = name.substring(0, i);
lvl = getStringProperty("org.apache.commons.logging.simplelog.log." + name);
i = String.valueOf(name).lastIndexOf(".");
}
if (null == lvl)
lvl = getStringProperty("org.apache.commons.logging.simplelog.defaultlog");
if ("all".equalsIgnoreCase(lvl)) {
setLevel(0);
} else if ("trace".equalsIgnoreCase(lvl)) {
setLevel(1);
} else if ("debug".equalsIgnoreCase(lvl)) {
setLevel(2);
} else if ("info".equalsIgnoreCase(lvl)) {
setLevel(3);
} else if ("warn".equalsIgnoreCase(lvl)) {
setLevel(4);
} else if ("error".equalsIgnoreCase(lvl)) {
setLevel(5);
} else if ("fatal".equalsIgnoreCase(lvl)) {
setLevel(6);
} else if ("off".equalsIgnoreCase(lvl)) {
setLevel(7);
}
}
public void setLevel(int currentLogLevel) {
this.currentLogLevel = currentLogLevel;
}
public int getLevel() {
return this.currentLogLevel;
}
protected void log(int type, Object message, Throwable t) {
StringBuffer buf = new StringBuffer();
if (showDateTime) {
String dateText;
Date now = new Date();
synchronized (dateFormatter) {
dateText = dateFormatter.format(now);
}
buf.append(dateText);
buf.append(" ");
}
switch (type) {
case 1:
buf.append("[TRACE] ");
break;
case 2:
buf.append("[DEBUG] ");
break;
case 3:
buf.append("[INFO] ");
break;
case 4:
buf.append("[WARN] ");
break;
case 5:
buf.append("[ERROR] ");
break;
case 6:
buf.append("[FATAL] ");
break;
}
if (showShortName) {
if (this.shortLogName == null) {
String slName = this.logName.substring(this.logName.lastIndexOf(".") + 1);
this.shortLogName = slName.substring(slName.lastIndexOf("/") + 1);
}
buf.append(String.valueOf(this.shortLogName)).append(" - ");
} else if (showLogName) {
buf.append(String.valueOf(this.logName)).append(" - ");
}
buf.append(String.valueOf(message));
if (t != null) {
buf.append(" <");
buf.append(t.toString());
buf.append(">");
StringWriter sw = new StringWriter(1024);
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
buf.append(sw.toString());
}
write(buf);
}
protected void write(StringBuffer buffer) {
System.err.println(buffer.toString());
}
protected boolean isLevelEnabled(int logLevel) {
return (logLevel >= this.currentLogLevel);
}
public final void debug(Object message) {
if (isLevelEnabled(2))
log(2, message, null);
}
public final void debug(Object message, Throwable t) {
if (isLevelEnabled(2))
log(2, message, t);
}
public final void trace(Object message) {
if (isLevelEnabled(1))
log(1, message, null);
}
public final void trace(Object message, Throwable t) {
if (isLevelEnabled(1))
log(1, message, t);
}
public final void info(Object message) {
if (isLevelEnabled(3))
log(3, message, null);
}
public final void info(Object message, Throwable t) {
if (isLevelEnabled(3))
log(3, message, t);
}
public final void warn(Object message) {
if (isLevelEnabled(4))
log(4, message, null);
}
public final void warn(Object message, Throwable t) {
if (isLevelEnabled(4))
log(4, message, t);
}
public final void error(Object message) {
if (isLevelEnabled(5))
log(5, message, null);
}
public final void error(Object message, Throwable t) {
if (isLevelEnabled(5))
log(5, message, t);
}
public final void fatal(Object message) {
if (isLevelEnabled(6))
log(6, message, null);
}
public final void fatal(Object message, Throwable t) {
if (isLevelEnabled(6))
log(6, message, t);
}
public final boolean isDebugEnabled() {
return isLevelEnabled(2);
}
public final boolean isErrorEnabled() {
return isLevelEnabled(5);
}
public final boolean isFatalEnabled() {
return isLevelEnabled(6);
}
public final boolean isInfoEnabled() {
return isLevelEnabled(3);
}
public final boolean isTraceEnabled() {
return isLevelEnabled(1);
}
public final boolean isWarnEnabled() {
return isLevelEnabled(4);
}
private static ClassLoader getContextClassLoader() {
ClassLoader classLoader = null;
try {
Method method = Thread.class.getMethod("getContextClassLoader", null);
try {
classLoader = (ClassLoader)method.invoke(Thread.currentThread(), null);
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
if (!(e.getTargetException() instanceof SecurityException))
throw new LogConfigurationException("Unexpected InvocationTargetException", e.getTargetException());
}
} catch (NoSuchMethodException e) {}
if (classLoader == null)
classLoader = SimpleLog.class.getClassLoader();
return classLoader;
}
private static InputStream getResourceAsStream(String name) {
return (InputStream)AccessController.doPrivileged(new PrivilegedAction(name) {
private final String val$name;
{
this.val$name = param1String;
}
public Object run() {
ClassLoader threadCL = SimpleLog.getContextClassLoader();
if (threadCL != null)
return threadCL.getResourceAsStream(this.val$name);
return ClassLoader.getSystemResourceAsStream(this.val$name);
}
});
}
}

View file

@ -0,0 +1,279 @@
package org.apache.commons.logging.impl;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public final class WeakHashtable extends Hashtable {
private static final long serialVersionUID = -1546036869799732453L;
private static final int MAX_CHANGES_BEFORE_PURGE = 100;
private static final int PARTIAL_PURGE_COUNT = 10;
private final ReferenceQueue queue = new ReferenceQueue();
private int changeCount = 0;
public boolean containsKey(Object key) {
Referenced referenced = new Referenced(key);
return super.containsKey(referenced);
}
public Enumeration elements() {
purge();
return super.elements();
}
public Set entrySet() {
purge();
Set referencedEntries = super.entrySet();
Set unreferencedEntries = new HashSet();
for (Iterator it = referencedEntries.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
Referenced referencedKey = (Referenced)entry.getKey();
Object key = referencedKey.getValue();
Object value = entry.getValue();
if (key != null) {
Entry dereferencedEntry = new Entry(key, value);
unreferencedEntries.add(dereferencedEntry);
}
}
return unreferencedEntries;
}
public Object get(Object key) {
Referenced referenceKey = new Referenced(key);
return super.get(referenceKey);
}
public Enumeration keys() {
purge();
Enumeration enumer = super.keys();
return new Enumeration(this, enumer) {
private final Enumeration val$enumer;
private final WeakHashtable this$0;
{
this.this$0 = this$0;
this.val$enumer = param1Enumeration;
}
public boolean hasMoreElements() {
return this.val$enumer.hasMoreElements();
}
public Object nextElement() {
WeakHashtable.Referenced nextReference = (WeakHashtable.Referenced)this.val$enumer.nextElement();
return nextReference.getValue();
}
};
}
public Set keySet() {
purge();
Set referencedKeys = super.keySet();
Set unreferencedKeys = new HashSet();
for (Iterator it = referencedKeys.iterator(); it.hasNext(); ) {
Referenced referenceKey = (Referenced)it.next();
Object keyValue = referenceKey.getValue();
if (keyValue != null)
unreferencedKeys.add(keyValue);
}
return unreferencedKeys;
}
public synchronized Object put(Object key, Object value) {
if (key == null)
throw new NullPointerException("Null keys are not allowed");
if (value == null)
throw new NullPointerException("Null values are not allowed");
if (this.changeCount++ > 100) {
purge();
this.changeCount = 0;
} else if (this.changeCount % 10 == 0) {
purgeOne();
}
Referenced keyRef = new Referenced(key, this.queue);
return super.put(keyRef, value);
}
public void putAll(Map t) {
if (t != null) {
Set entrySet = t.entrySet();
for (Iterator it = entrySet.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
put(entry.getKey(), entry.getValue());
}
}
}
public Collection values() {
purge();
return super.values();
}
public synchronized Object remove(Object key) {
if (this.changeCount++ > 100) {
purge();
this.changeCount = 0;
} else if (this.changeCount % 10 == 0) {
purgeOne();
}
return super.remove(new Referenced(key));
}
public boolean isEmpty() {
purge();
return super.isEmpty();
}
public int size() {
purge();
return super.size();
}
public String toString() {
purge();
return super.toString();
}
protected void rehash() {
purge();
super.rehash();
}
private void purge() {
List toRemove = new ArrayList();
synchronized (this.queue) {
WeakKey key;
while ((key = (WeakKey)this.queue.poll()) != null)
toRemove.add(key.getReferenced());
}
int size = toRemove.size();
for (int i = 0; i < size; i++)
super.remove(toRemove.get(i));
}
private void purgeOne() {
synchronized (this.queue) {
WeakKey key = (WeakKey)this.queue.poll();
if (key != null)
super.remove(key.getReferenced());
}
}
private static final class Entry implements Map.Entry {
private final Object key;
private final Object value;
Entry(Object x0, Object x1, WeakHashtable.null x2) {
this(x0, x1);
}
private Entry(Object key, Object value) {
this.key = key;
this.value = value;
}
public boolean equals(Object o) {
boolean result = false;
if (o != null && o instanceof Map.Entry) {
Map.Entry entry = (Map.Entry)o;
result = (((getKey() == null) ? (entry.getKey() == null) : getKey().equals(entry.getKey())) && ((getValue() == null) ? (entry.getValue() == null) : getValue().equals(entry.getValue())));
}
return result;
}
public int hashCode() {
return ((getKey() == null) ? 0 : getKey().hashCode()) ^ ((getValue() == null) ? 0 : getValue().hashCode());
}
public Object setValue(Object value) {
throw new UnsupportedOperationException("Entry.setValue is not supported.");
}
public Object getValue() {
return this.value;
}
public Object getKey() {
return this.key;
}
}
private static final class Referenced {
private final WeakReference reference;
private final int hashCode;
Referenced(Object x0, WeakHashtable.null x1) {
this(x0);
}
Referenced(Object x0, ReferenceQueue x1, WeakHashtable.null x2) {
this(x0, x1);
}
private Referenced(Object referant) {
this.reference = new WeakReference(referant);
this.hashCode = referant.hashCode();
}
private Referenced(Object key, ReferenceQueue queue) {
this.reference = new WeakHashtable.WeakKey(key, queue, this);
this.hashCode = key.hashCode();
}
public int hashCode() {
return this.hashCode;
}
private Object getValue() {
return this.reference.get();
}
public boolean equals(Object o) {
boolean result = false;
if (o instanceof Referenced) {
Referenced otherKey = (Referenced)o;
Object thisKeyValue = getValue();
Object otherKeyValue = otherKey.getValue();
if (thisKeyValue == null) {
result = (otherKeyValue == null);
result = (result && hashCode() == otherKey.hashCode());
} else {
result = thisKeyValue.equals(otherKeyValue);
}
}
return result;
}
}
private static final class WeakKey extends WeakReference {
private final WeakHashtable.Referenced referenced;
WeakKey(Object x0, ReferenceQueue x1, WeakHashtable.Referenced x2, WeakHashtable.null x3) {
this(x0, x1, x2);
}
private WeakKey(Object key, ReferenceQueue queue, WeakHashtable.Referenced referenced) {
super(key, queue);
this.referenced = referenced;
}
private WeakHashtable.Referenced getReferenced() {
return this.referenced;
}
}
}

View file

@ -0,0 +1,8 @@
package org.apache.fontbox;
import java.io.IOException;
import org.apache.fontbox.encoding.Encoding;
public interface EncodedFont {
Encoding getEncoding() throws IOException;
}

View file

@ -0,0 +1,20 @@
package org.apache.fontbox;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.List;
import org.apache.fontbox.util.BoundingBox;
public interface FontBoxFont {
String getName() throws IOException;
BoundingBox getFontBBox() throws IOException;
List<Number> getFontMatrix() throws IOException;
GeneralPath getPath(String paramString) throws IOException;
float getWidth(String paramString) throws IOException;
boolean hasGlyph(String paramString) throws IOException;
}

View file

@ -0,0 +1,659 @@
package org.apache.fontbox.afm;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import org.apache.fontbox.util.BoundingBox;
import org.apache.fontbox.util.Charsets;
public class AFMParser {
public static final String COMMENT = "Comment";
public static final String START_FONT_METRICS = "StartFontMetrics";
public static final String END_FONT_METRICS = "EndFontMetrics";
public static final String FONT_NAME = "FontName";
public static final String FULL_NAME = "FullName";
public static final String FAMILY_NAME = "FamilyName";
public static final String WEIGHT = "Weight";
public static final String FONT_BBOX = "FontBBox";
public static final String VERSION = "Version";
public static final String NOTICE = "Notice";
public static final String ENCODING_SCHEME = "EncodingScheme";
public static final String MAPPING_SCHEME = "MappingScheme";
public static final String ESC_CHAR = "EscChar";
public static final String CHARACTER_SET = "CharacterSet";
public static final String CHARACTERS = "Characters";
public static final String IS_BASE_FONT = "IsBaseFont";
public static final String V_VECTOR = "VVector";
public static final String IS_FIXED_V = "IsFixedV";
public static final String CAP_HEIGHT = "CapHeight";
public static final String X_HEIGHT = "XHeight";
public static final String ASCENDER = "Ascender";
public static final String DESCENDER = "Descender";
public static final String UNDERLINE_POSITION = "UnderlinePosition";
public static final String UNDERLINE_THICKNESS = "UnderlineThickness";
public static final String ITALIC_ANGLE = "ItalicAngle";
public static final String CHAR_WIDTH = "CharWidth";
public static final String IS_FIXED_PITCH = "IsFixedPitch";
public static final String START_CHAR_METRICS = "StartCharMetrics";
public static final String END_CHAR_METRICS = "EndCharMetrics";
public static final String CHARMETRICS_C = "C";
public static final String CHARMETRICS_CH = "CH";
public static final String CHARMETRICS_WX = "WX";
public static final String CHARMETRICS_W0X = "W0X";
public static final String CHARMETRICS_W1X = "W1X";
public static final String CHARMETRICS_WY = "WY";
public static final String CHARMETRICS_W0Y = "W0Y";
public static final String CHARMETRICS_W1Y = "W1Y";
public static final String CHARMETRICS_W = "W";
public static final String CHARMETRICS_W0 = "W0";
public static final String CHARMETRICS_W1 = "W1";
public static final String CHARMETRICS_VV = "VV";
public static final String CHARMETRICS_N = "N";
public static final String CHARMETRICS_B = "B";
public static final String CHARMETRICS_L = "L";
public static final String STD_HW = "StdHW";
public static final String STD_VW = "StdVW";
public static final String START_TRACK_KERN = "StartTrackKern";
public static final String END_TRACK_KERN = "EndTrackKern";
public static final String START_KERN_DATA = "StartKernData";
public static final String END_KERN_DATA = "EndKernData";
public static final String START_KERN_PAIRS = "StartKernPairs";
public static final String END_KERN_PAIRS = "EndKernPairs";
public static final String START_KERN_PAIRS0 = "StartKernPairs0";
public static final String START_KERN_PAIRS1 = "StartKernPairs1";
public static final String START_COMPOSITES = "StartComposites";
public static final String END_COMPOSITES = "EndComposites";
public static final String CC = "CC";
public static final String PCC = "PCC";
public static final String KERN_PAIR_KP = "KP";
public static final String KERN_PAIR_KPH = "KPH";
public static final String KERN_PAIR_KPX = "KPX";
public static final String KERN_PAIR_KPY = "KPY";
private static final int BITS_IN_HEX = 16;
private final InputStream input;
public AFMParser(InputStream in) {
this.input = in;
}
public FontMetrics parse() throws IOException {
return parseFontMetric(false);
}
public FontMetrics parse(boolean reducedDataset) throws IOException {
return parseFontMetric(reducedDataset);
}
private FontMetrics parseFontMetric(boolean reducedDataset) throws IOException {
FontMetrics fontMetrics = new FontMetrics();
String startFontMetrics = readString();
if (!"StartFontMetrics".equals(startFontMetrics))
throw new IOException("Error: The AFM file should start with StartFontMetrics and not '" + startFontMetrics + "'");
fontMetrics.setAFMVersion(readFloat());
boolean charMetricsRead = false;
String nextCommand;
while (!"EndFontMetrics".equals(nextCommand = readString())) {
if ("FontName".equals(nextCommand)) {
fontMetrics.setFontName(readLine());
continue;
}
if ("FullName".equals(nextCommand)) {
fontMetrics.setFullName(readLine());
continue;
}
if ("FamilyName".equals(nextCommand)) {
fontMetrics.setFamilyName(readLine());
continue;
}
if ("Weight".equals(nextCommand)) {
fontMetrics.setWeight(readLine());
continue;
}
if ("FontBBox".equals(nextCommand)) {
BoundingBox bBox = new BoundingBox();
bBox.setLowerLeftX(readFloat());
bBox.setLowerLeftY(readFloat());
bBox.setUpperRightX(readFloat());
bBox.setUpperRightY(readFloat());
fontMetrics.setFontBBox(bBox);
continue;
}
if ("Version".equals(nextCommand)) {
fontMetrics.setFontVersion(readLine());
continue;
}
if ("Notice".equals(nextCommand)) {
fontMetrics.setNotice(readLine());
continue;
}
if ("EncodingScheme".equals(nextCommand)) {
fontMetrics.setEncodingScheme(readLine());
continue;
}
if ("MappingScheme".equals(nextCommand)) {
fontMetrics.setMappingScheme(readInt());
continue;
}
if ("EscChar".equals(nextCommand)) {
fontMetrics.setEscChar(readInt());
continue;
}
if ("CharacterSet".equals(nextCommand)) {
fontMetrics.setCharacterSet(readLine());
continue;
}
if ("Characters".equals(nextCommand)) {
fontMetrics.setCharacters(readInt());
continue;
}
if ("IsBaseFont".equals(nextCommand)) {
fontMetrics.setIsBaseFont(readBoolean());
continue;
}
if ("VVector".equals(nextCommand)) {
float[] vector = new float[2];
vector[0] = readFloat();
vector[1] = readFloat();
fontMetrics.setVVector(vector);
continue;
}
if ("IsFixedV".equals(nextCommand)) {
fontMetrics.setIsFixedV(readBoolean());
continue;
}
if ("CapHeight".equals(nextCommand)) {
fontMetrics.setCapHeight(readFloat());
continue;
}
if ("XHeight".equals(nextCommand)) {
fontMetrics.setXHeight(readFloat());
continue;
}
if ("Ascender".equals(nextCommand)) {
fontMetrics.setAscender(readFloat());
continue;
}
if ("Descender".equals(nextCommand)) {
fontMetrics.setDescender(readFloat());
continue;
}
if ("StdHW".equals(nextCommand)) {
fontMetrics.setStandardHorizontalWidth(readFloat());
continue;
}
if ("StdVW".equals(nextCommand)) {
fontMetrics.setStandardVerticalWidth(readFloat());
continue;
}
if ("Comment".equals(nextCommand)) {
fontMetrics.addComment(readLine());
continue;
}
if ("UnderlinePosition".equals(nextCommand)) {
fontMetrics.setUnderlinePosition(readFloat());
continue;
}
if ("UnderlineThickness".equals(nextCommand)) {
fontMetrics.setUnderlineThickness(readFloat());
continue;
}
if ("ItalicAngle".equals(nextCommand)) {
fontMetrics.setItalicAngle(readFloat());
continue;
}
if ("CharWidth".equals(nextCommand)) {
float[] widths = new float[2];
widths[0] = readFloat();
widths[1] = readFloat();
fontMetrics.setCharWidth(widths);
continue;
}
if ("IsFixedPitch".equals(nextCommand)) {
fontMetrics.setFixedPitch(readBoolean());
continue;
}
if ("StartCharMetrics".equals(nextCommand)) {
int count = readInt();
List<CharMetric> charMetrics = new ArrayList<CharMetric>(count);
for (int i = 0; i < count; i++) {
CharMetric charMetric = parseCharMetric();
charMetrics.add(charMetric);
}
String end = readString();
if (!end.equals("EndCharMetrics"))
throw new IOException("Error: Expected 'EndCharMetrics' actual '" + end + "'");
charMetricsRead = true;
fontMetrics.setCharMetrics(charMetrics);
continue;
}
if (!reducedDataset && "StartComposites".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
Composite part = parseComposite();
fontMetrics.addComposite(part);
}
String end = readString();
if (!end.equals("EndComposites"))
throw new IOException("Error: Expected 'EndComposites' actual '" + end + "'");
continue;
}
if (!reducedDataset && "StartKernData".equals(nextCommand)) {
parseKernData(fontMetrics);
continue;
}
if (reducedDataset && charMetricsRead)
break;
throw new IOException("Unknown AFM key '" + nextCommand + "'");
}
return fontMetrics;
}
private void parseKernData(FontMetrics fontMetrics) throws IOException {
String nextCommand;
while (!(nextCommand = readString()).equals("EndKernData")) {
if ("StartTrackKern".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
TrackKern kern = new TrackKern();
kern.setDegree(readInt());
kern.setMinPointSize(readFloat());
kern.setMinKern(readFloat());
kern.setMaxPointSize(readFloat());
kern.setMaxKern(readFloat());
fontMetrics.addTrackKern(kern);
}
String end = readString();
if (!end.equals("EndTrackKern"))
throw new IOException("Error: Expected 'EndTrackKern' actual '" + end + "'");
continue;
}
if ("StartKernPairs".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
if ("StartKernPairs0".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair0(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
if ("StartKernPairs1".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair1(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
throw new IOException("Unknown kerning data type '" + nextCommand + "'");
}
}
private KernPair parseKernPair() throws IOException {
KernPair kernPair = new KernPair();
String cmd = readString();
if ("KP".equals(cmd)) {
String first = readString();
String second = readString();
float x = readFloat();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(y);
} else if ("KPH".equals(cmd)) {
String first = hexToString(readString());
String second = hexToString(readString());
float x = readFloat();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(y);
} else if ("KPX".equals(cmd)) {
String first = readString();
String second = readString();
float x = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(0.0F);
} else if ("KPY".equals(cmd)) {
String first = readString();
String second = readString();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(0.0F);
kernPair.setY(y);
} else {
throw new IOException("Error expected kern pair command actual='" + cmd + "'");
}
return kernPair;
}
private String hexToString(String hexString) throws IOException {
if (hexString.length() < 2)
throw new IOException("Error: Expected hex string of length >= 2 not='" + hexString);
if (hexString.charAt(0) != '<' || hexString.charAt(hexString.length() - 1) != '>')
throw new IOException("String should be enclosed by angle brackets '" + hexString + "'");
hexString = hexString.substring(1, hexString.length() - 1);
byte[] data = new byte[hexString.length() / 2];
for (int i = 0; i < hexString.length(); i += 2) {
String hex = "" + hexString.charAt(i) + hexString.charAt(i + 1);
try {
data[i / 2] = (byte)Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM file:" + e);
}
}
return new String(data, Charsets.ISO_8859_1);
}
private Composite parseComposite() throws IOException {
int partCount;
Composite composite = new Composite();
String partData = readLine();
StringTokenizer tokenizer = new StringTokenizer(partData, " ;");
String cc = tokenizer.nextToken();
if (!cc.equals("CC"))
throw new IOException("Expected 'CC' actual='" + cc + "'");
String name = tokenizer.nextToken();
composite.setName(name);
try {
partCount = Integer.parseInt(tokenizer.nextToken());
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
for (int i = 0; i < partCount; i++) {
CompositePart part = new CompositePart();
String pcc = tokenizer.nextToken();
if (!pcc.equals("PCC"))
throw new IOException("Expected 'PCC' actual='" + pcc + "'");
String partName = tokenizer.nextToken();
try {
int x = Integer.parseInt(tokenizer.nextToken());
int y = Integer.parseInt(tokenizer.nextToken());
part.setName(partName);
part.setXDisplacement(x);
part.setYDisplacement(y);
composite.addPart(part);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
}
return composite;
}
private CharMetric parseCharMetric() throws IOException {
CharMetric charMetric = new CharMetric();
String metrics = readLine();
StringTokenizer metricsTokenizer = new StringTokenizer(metrics);
try {
while (metricsTokenizer.hasMoreTokens()) {
String nextCommand = metricsTokenizer.nextToken();
if (nextCommand.equals("C")) {
String charCode = metricsTokenizer.nextToken();
charMetric.setCharacterCode(Integer.parseInt(charCode));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("CH")) {
String charCode = metricsTokenizer.nextToken();
charMetric.setCharacterCode(Integer.parseInt(charCode, 16));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("WX")) {
String wx = metricsTokenizer.nextToken();
charMetric.setWx(Float.parseFloat(wx));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0X")) {
String w0x = metricsTokenizer.nextToken();
charMetric.setW0x(Float.parseFloat(w0x));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1X")) {
String w1x = metricsTokenizer.nextToken();
charMetric.setW0x(Float.parseFloat(w1x));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("WY")) {
String wy = metricsTokenizer.nextToken();
charMetric.setWy(Float.parseFloat(wy));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0Y")) {
String w0y = metricsTokenizer.nextToken();
charMetric.setW0y(Float.parseFloat(w0y));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1Y")) {
String w1y = metricsTokenizer.nextToken();
charMetric.setW0y(Float.parseFloat(w1y));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W")) {
String w0 = metricsTokenizer.nextToken();
String w1 = metricsTokenizer.nextToken();
float[] w = new float[2];
w[0] = Float.parseFloat(w0);
w[1] = Float.parseFloat(w1);
charMetric.setW(w);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0")) {
String w00 = metricsTokenizer.nextToken();
String w01 = metricsTokenizer.nextToken();
float[] w0 = new float[2];
w0[0] = Float.parseFloat(w00);
w0[1] = Float.parseFloat(w01);
charMetric.setW0(w0);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1")) {
String w10 = metricsTokenizer.nextToken();
String w11 = metricsTokenizer.nextToken();
float[] w1 = new float[2];
w1[0] = Float.parseFloat(w10);
w1[1] = Float.parseFloat(w11);
charMetric.setW1(w1);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("VV")) {
String vv0 = metricsTokenizer.nextToken();
String vv1 = metricsTokenizer.nextToken();
float[] vv = new float[2];
vv[0] = Float.parseFloat(vv0);
vv[1] = Float.parseFloat(vv1);
charMetric.setVv(vv);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("N")) {
String name = metricsTokenizer.nextToken();
charMetric.setName(name);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("B")) {
String llx = metricsTokenizer.nextToken();
String lly = metricsTokenizer.nextToken();
String urx = metricsTokenizer.nextToken();
String ury = metricsTokenizer.nextToken();
BoundingBox box = new BoundingBox();
box.setLowerLeftX(Float.parseFloat(llx));
box.setLowerLeftY(Float.parseFloat(lly));
box.setUpperRightX(Float.parseFloat(urx));
box.setUpperRightY(Float.parseFloat(ury));
charMetric.setBoundingBox(box);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("L")) {
String successor = metricsTokenizer.nextToken();
String ligature = metricsTokenizer.nextToken();
Ligature lig = new Ligature();
lig.setSuccessor(successor);
lig.setLigature(ligature);
charMetric.addLigature(lig);
verifySemicolon(metricsTokenizer);
continue;
}
throw new IOException("Unknown CharMetrics command '" + nextCommand + "'");
}
} catch (NumberFormatException e) {
throw new IOException("Error: Corrupt AFM document:" + e);
}
return charMetric;
}
private void verifySemicolon(StringTokenizer tokenizer) throws IOException {
if (tokenizer.hasMoreTokens()) {
String semicolon = tokenizer.nextToken();
if (!semicolon.equals(";"))
throw new IOException("Error: Expected semicolon in stream actual='" + semicolon + "'");
} else {
throw new IOException("CharMetrics is missing a semicolon after a command");
}
}
private boolean readBoolean() throws IOException {
String theBoolean = readString();
return Boolean.valueOf(theBoolean);
}
private int readInt() throws IOException {
String theInt = readString();
try {
return Integer.parseInt(theInt);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
}
private float readFloat() throws IOException {
String theFloat = readString();
return Float.parseFloat(theFloat);
}
private String readLine() throws IOException {
StringBuilder buf = new StringBuilder(60);
int nextByte = this.input.read();
while (isWhitespace(nextByte))
nextByte = this.input.read();
buf.append((char)nextByte);
while (!isEOL(nextByte = this.input.read()))
buf.append((char)nextByte);
return buf.toString();
}
private String readString() throws IOException {
StringBuilder buf = new StringBuilder(24);
int nextByte = this.input.read();
while (isWhitespace(nextByte))
nextByte = this.input.read();
buf.append((char)nextByte);
while (!isWhitespace(nextByte = this.input.read()))
buf.append((char)nextByte);
return buf.toString();
}
private boolean isEOL(int character) {
return (character == 13 || character == 10);
}
private boolean isWhitespace(int character) {
return (character == 32 || character == 9 || character == 13 || character == 10);
}
}

View file

@ -0,0 +1,151 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.List;
import org.apache.fontbox.util.BoundingBox;
public class CharMetric {
private int characterCode;
private float wx;
private float w0x;
private float w1x;
private float wy;
private float w0y;
private float w1y;
private float[] w;
private float[] w0;
private float[] w1;
private float[] vv;
private String name;
private BoundingBox boundingBox;
private List<Ligature> ligatures = new ArrayList<Ligature>();
public BoundingBox getBoundingBox() {
return this.boundingBox;
}
public void setBoundingBox(BoundingBox bBox) {
this.boundingBox = bBox;
}
public int getCharacterCode() {
return this.characterCode;
}
public void setCharacterCode(int cCode) {
this.characterCode = cCode;
}
public void addLigature(Ligature ligature) {
this.ligatures.add(ligature);
}
public List<Ligature> getLigatures() {
return this.ligatures;
}
public void setLigatures(List<Ligature> lig) {
this.ligatures = lig;
}
public String getName() {
return this.name;
}
public void setName(String n) {
this.name = n;
}
public float[] getVv() {
return this.vv;
}
public void setVv(float[] vvValue) {
this.vv = vvValue;
}
public float[] getW() {
return this.w;
}
public void setW(float[] wValue) {
this.w = wValue;
}
public float[] getW0() {
return this.w0;
}
public void setW0(float[] w0Value) {
this.w0 = w0Value;
}
public float getW0x() {
return this.w0x;
}
public void setW0x(float w0xValue) {
this.w0x = w0xValue;
}
public float getW0y() {
return this.w0y;
}
public void setW0y(float w0yValue) {
this.w0y = w0yValue;
}
public float[] getW1() {
return this.w1;
}
public void setW1(float[] w1Value) {
this.w1 = w1Value;
}
public float getW1x() {
return this.w1x;
}
public void setW1x(float w1xValue) {
this.w1x = w1xValue;
}
public float getW1y() {
return this.w1y;
}
public void setW1y(float w1yValue) {
this.w1y = w1yValue;
}
public float getWx() {
return this.wx;
}
public void setWx(float wxValue) {
this.wx = wxValue;
}
public float getWy() {
return this.wy;
}
public void setWy(float wyValue) {
this.wy = wyValue;
}
}

View file

@ -0,0 +1,30 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.List;
public class Composite {
private String name;
private List<CompositePart> parts = new ArrayList<CompositePart>();
public String getName() {
return this.name;
}
public void setName(String nameValue) {
this.name = nameValue;
}
public void addPart(CompositePart part) {
this.parts.add(part);
}
public List<CompositePart> getParts() {
return this.parts;
}
public void setParts(List<CompositePart> partsList) {
this.parts = partsList;
}
}

View file

@ -0,0 +1,33 @@
package org.apache.fontbox.afm;
public class CompositePart {
private String name;
private int xDisplacement;
private int yDisplacement;
public String getName() {
return this.name;
}
public void setName(String nameValue) {
this.name = nameValue;
}
public int getXDisplacement() {
return this.xDisplacement;
}
public void setXDisplacement(int xDisp) {
this.xDisplacement = xDisp;
}
public int getYDisplacement() {
return this.yDisplacement;
}
public void setYDisplacement(int yDisp) {
this.yDisplacement = yDisp;
}
}

View file

@ -0,0 +1,426 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.util.BoundingBox;
public class FontMetrics {
private float afmVersion;
private int metricSets = 0;
private String fontName;
private String fullName;
private String familyName;
private String weight;
private BoundingBox fontBBox;
private String fontVersion;
private String notice;
private String encodingScheme;
private int mappingScheme;
private int escChar;
private String characterSet;
private int characters;
private boolean isBaseFont;
private float[] vVector;
private boolean isFixedV;
private float capHeight;
private float xHeight;
private float ascender;
private float descender;
private final List<String> comments = new ArrayList<String>();
private float underlinePosition;
private float underlineThickness;
private float italicAngle;
private float[] charWidth;
private boolean isFixedPitch;
private float standardHorizontalWidth;
private float standardVerticalWidth;
private List<CharMetric> charMetrics = new ArrayList<CharMetric>();
private Map<String, CharMetric> charMetricsMap = new HashMap<String, CharMetric>();
private List<TrackKern> trackKern = new ArrayList<TrackKern>();
private List<Composite> composites = new ArrayList<Composite>();
private List<KernPair> kernPairs = new ArrayList<KernPair>();
private List<KernPair> kernPairs0 = new ArrayList<KernPair>();
private List<KernPair> kernPairs1 = new ArrayList<KernPair>();
public float getCharacterWidth(String name) {
float result = 0.0F;
CharMetric metric = this.charMetricsMap.get(name);
if (metric != null)
result = metric.getWx();
return result;
}
public float getCharacterHeight(String name) {
float result = 0.0F;
CharMetric metric = this.charMetricsMap.get(name);
if (metric != null) {
result = metric.getWy();
if (result == 0.0F)
result = metric.getBoundingBox().getHeight();
}
return result;
}
public float getAverageCharacterWidth() {
float average = 0.0F;
float totalWidths = 0.0F;
float characterCount = 0.0F;
for (CharMetric metric : this.charMetrics) {
if (metric.getWx() > 0.0F) {
totalWidths += metric.getWx();
characterCount++;
}
}
if (totalWidths > 0.0F)
average = totalWidths / characterCount;
return average;
}
public void addComment(String comment) {
this.comments.add(comment);
}
public List<String> getComments() {
return Collections.<String>unmodifiableList(this.comments);
}
public float getAFMVersion() {
return this.afmVersion;
}
public int getMetricSets() {
return this.metricSets;
}
public void setAFMVersion(float afmVersionValue) {
this.afmVersion = afmVersionValue;
}
public void setMetricSets(int metricSetsValue) {
if (metricSetsValue < 0 || metricSetsValue > 2)
throw new IllegalArgumentException("The metricSets attribute must be in the set {0,1,2} and not '" + metricSetsValue + "'");
this.metricSets = metricSetsValue;
}
public String getFontName() {
return this.fontName;
}
public void setFontName(String name) {
this.fontName = name;
}
public String getFullName() {
return this.fullName;
}
public void setFullName(String fullNameValue) {
this.fullName = fullNameValue;
}
public String getFamilyName() {
return this.familyName;
}
public void setFamilyName(String familyNameValue) {
this.familyName = familyNameValue;
}
public String getWeight() {
return this.weight;
}
public void setWeight(String weightValue) {
this.weight = weightValue;
}
public BoundingBox getFontBBox() {
return this.fontBBox;
}
public void setFontBBox(BoundingBox bBox) {
this.fontBBox = bBox;
}
public String getNotice() {
return this.notice;
}
public void setNotice(String noticeValue) {
this.notice = noticeValue;
}
public String getEncodingScheme() {
return this.encodingScheme;
}
public void setEncodingScheme(String encodingSchemeValue) {
this.encodingScheme = encodingSchemeValue;
}
public int getMappingScheme() {
return this.mappingScheme;
}
public void setMappingScheme(int mappingSchemeValue) {
this.mappingScheme = mappingSchemeValue;
}
public int getEscChar() {
return this.escChar;
}
public void setEscChar(int escCharValue) {
this.escChar = escCharValue;
}
public String getCharacterSet() {
return this.characterSet;
}
public void setCharacterSet(String characterSetValue) {
this.characterSet = characterSetValue;
}
public int getCharacters() {
return this.characters;
}
public void setCharacters(int charactersValue) {
this.characters = charactersValue;
}
public boolean isBaseFont() {
return this.isBaseFont;
}
public void setIsBaseFont(boolean isBaseFontValue) {
this.isBaseFont = isBaseFontValue;
}
public float[] getVVector() {
return this.vVector;
}
public void setVVector(float[] vVectorValue) {
this.vVector = vVectorValue;
}
public boolean isFixedV() {
return this.isFixedV;
}
public void setIsFixedV(boolean isFixedVValue) {
this.isFixedV = isFixedVValue;
}
public float getCapHeight() {
return this.capHeight;
}
public void setCapHeight(float capHeightValue) {
this.capHeight = capHeightValue;
}
public float getXHeight() {
return this.xHeight;
}
public void setXHeight(float xHeightValue) {
this.xHeight = xHeightValue;
}
public float getAscender() {
return this.ascender;
}
public void setAscender(float ascenderValue) {
this.ascender = ascenderValue;
}
public float getDescender() {
return this.descender;
}
public void setDescender(float descenderValue) {
this.descender = descenderValue;
}
public String getFontVersion() {
return this.fontVersion;
}
public void setFontVersion(String fontVersionValue) {
this.fontVersion = fontVersionValue;
}
public float getUnderlinePosition() {
return this.underlinePosition;
}
public void setUnderlinePosition(float underlinePositionValue) {
this.underlinePosition = underlinePositionValue;
}
public float getUnderlineThickness() {
return this.underlineThickness;
}
public void setUnderlineThickness(float underlineThicknessValue) {
this.underlineThickness = underlineThicknessValue;
}
public float getItalicAngle() {
return this.italicAngle;
}
public void setItalicAngle(float italicAngleValue) {
this.italicAngle = italicAngleValue;
}
public float[] getCharWidth() {
return this.charWidth;
}
public void setCharWidth(float[] charWidthValue) {
this.charWidth = charWidthValue;
}
public boolean isFixedPitch() {
return this.isFixedPitch;
}
public void setFixedPitch(boolean isFixedPitchValue) {
this.isFixedPitch = isFixedPitchValue;
}
public List<CharMetric> getCharMetrics() {
return Collections.<CharMetric>unmodifiableList(this.charMetrics);
}
public void setCharMetrics(List<CharMetric> charMetricsValue) {
this.charMetrics = charMetricsValue;
this.charMetricsMap = new HashMap<String, CharMetric>(this.charMetrics.size());
for (CharMetric metric : charMetricsValue)
this.charMetricsMap.put(metric.getName(), metric);
}
public void addCharMetric(CharMetric metric) {
this.charMetrics.add(metric);
this.charMetricsMap.put(metric.getName(), metric);
}
public List<TrackKern> getTrackKern() {
return Collections.<TrackKern>unmodifiableList(this.trackKern);
}
public void setTrackKern(List<TrackKern> trackKernValue) {
this.trackKern = trackKernValue;
}
public void addTrackKern(TrackKern kern) {
this.trackKern.add(kern);
}
public List<Composite> getComposites() {
return Collections.<Composite>unmodifiableList(this.composites);
}
public void setComposites(List<Composite> compositesList) {
this.composites = compositesList;
}
public void addComposite(Composite composite) {
this.composites.add(composite);
}
public List<KernPair> getKernPairs() {
return Collections.<KernPair>unmodifiableList(this.kernPairs);
}
public void addKernPair(KernPair kernPair) {
this.kernPairs.add(kernPair);
}
public void setKernPairs(List<KernPair> kernPairsList) {
this.kernPairs = kernPairsList;
}
public List<KernPair> getKernPairs0() {
return Collections.<KernPair>unmodifiableList(this.kernPairs0);
}
public void addKernPair0(KernPair kernPair) {
this.kernPairs0.add(kernPair);
}
public void setKernPairs0(List<KernPair> kernPairs0List) {
this.kernPairs0 = kernPairs0List;
}
public List<KernPair> getKernPairs1() {
return Collections.<KernPair>unmodifiableList(this.kernPairs1);
}
public void addKernPair1(KernPair kernPair) {
this.kernPairs1.add(kernPair);
}
public void setKernPairs1(List<KernPair> kernPairs1List) {
this.kernPairs1 = kernPairs1List;
}
public float getStandardHorizontalWidth() {
return this.standardHorizontalWidth;
}
public void setStandardHorizontalWidth(float standardHorizontalWidthValue) {
this.standardHorizontalWidth = standardHorizontalWidthValue;
}
public float getStandardVerticalWidth() {
return this.standardVerticalWidth;
}
public void setStandardVerticalWidth(float standardVerticalWidthValue) {
this.standardVerticalWidth = standardVerticalWidthValue;
}
}

View file

@ -0,0 +1,43 @@
package org.apache.fontbox.afm;
public class KernPair {
private String firstKernCharacter;
private String secondKernCharacter;
private float x;
private float y;
public String getFirstKernCharacter() {
return this.firstKernCharacter;
}
public void setFirstKernCharacter(String firstKernCharacterValue) {
this.firstKernCharacter = firstKernCharacterValue;
}
public String getSecondKernCharacter() {
return this.secondKernCharacter;
}
public void setSecondKernCharacter(String secondKernCharacterValue) {
this.secondKernCharacter = secondKernCharacterValue;
}
public float getX() {
return this.x;
}
public void setX(float xValue) {
this.x = xValue;
}
public float getY() {
return this.y;
}
public void setY(float yValue) {
this.y = yValue;
}
}

View file

@ -0,0 +1,23 @@
package org.apache.fontbox.afm;
public class Ligature {
private String successor;
private String ligature;
public String getLigature() {
return this.ligature;
}
public void setLigature(String lig) {
this.ligature = lig;
}
public String getSuccessor() {
return this.successor;
}
public void setSuccessor(String successorValue) {
this.successor = successorValue;
}
}

View file

@ -0,0 +1,53 @@
package org.apache.fontbox.afm;
public class TrackKern {
private int degree;
private float minPointSize;
private float minKern;
private float maxPointSize;
private float maxKern;
public int getDegree() {
return this.degree;
}
public void setDegree(int degreeValue) {
this.degree = degreeValue;
}
public float getMaxKern() {
return this.maxKern;
}
public void setMaxKern(float maxKernValue) {
this.maxKern = maxKernValue;
}
public float getMaxPointSize() {
return this.maxPointSize;
}
public void setMaxPointSize(float maxPointSizeValue) {
this.maxPointSize = maxPointSizeValue;
}
public float getMinKern() {
return this.minKern;
}
public void setMinKern(float minKernValue) {
this.minKern = minKernValue;
}
public float getMinPointSize() {
return this.minPointSize;
}
public void setMinPointSize(float minPointSizeValue) {
this.minPointSize = minPointSizeValue;
}
}

View file

@ -0,0 +1,147 @@
package org.apache.fontbox.cff;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CFFCIDFont extends CFFFont {
private String registry;
private String ordering;
private int supplement;
private List<Map<String, Object>> fontDictionaries = new LinkedList<Map<String, Object>>();
private List<Map<String, Object>> privateDictionaries = new LinkedList<Map<String, Object>>();
private FDSelect fdSelect;
private final Map<Integer, CIDKeyedType2CharString> charStringCache = new ConcurrentHashMap<Integer, CIDKeyedType2CharString>();
private final PrivateType1CharStringReader reader = new PrivateType1CharStringReader();
public String getRegistry() {
return this.registry;
}
void setRegistry(String registry) {
this.registry = registry;
}
public String getOrdering() {
return this.ordering;
}
void setOrdering(String ordering) {
this.ordering = ordering;
}
public int getSupplement() {
return this.supplement;
}
void setSupplement(int supplement) {
this.supplement = supplement;
}
public List<Map<String, Object>> getFontDicts() {
return this.fontDictionaries;
}
void setFontDict(List<Map<String, Object>> fontDict) {
this.fontDictionaries = fontDict;
}
public List<Map<String, Object>> getPrivDicts() {
return this.privateDictionaries;
}
void setPrivDict(List<Map<String, Object>> privDict) {
this.privateDictionaries = privDict;
}
public FDSelect getFdSelect() {
return this.fdSelect;
}
void setFdSelect(FDSelect fdSelect) {
this.fdSelect = fdSelect;
}
private int getDefaultWidthX(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return 1000;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return privDict.containsKey("defaultWidthX") ? ((Number)privDict.get("defaultWidthX")).intValue() : 1000;
}
private int getNominalWidthX(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return 0;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return privDict.containsKey("nominalWidthX") ? ((Number)privDict.get("nominalWidthX")).intValue() : 0;
}
private byte[][] getLocalSubrIndex(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return null;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return (byte[][])privDict.get("Subrs");
}
public CIDKeyedType2CharString getType2CharString(int cid) throws IOException {
CIDKeyedType2CharString type2 = this.charStringCache.get(Integer.valueOf(cid));
if (type2 == null) {
int gid = this.charset.getGIDForCID(cid);
byte[] bytes = this.charStrings[gid];
if (bytes == null)
bytes = this.charStrings[0];
Type2CharStringParser parser = new Type2CharStringParser(this.fontName, cid);
List<Object> type2seq = parser.parse(bytes, this.globalSubrIndex, getLocalSubrIndex(gid));
type2 = new CIDKeyedType2CharString(this.reader, this.fontName, cid, gid, type2seq, getDefaultWidthX(gid), getNominalWidthX(gid));
this.charStringCache.put(Integer.valueOf(cid), type2);
}
return type2;
}
public List<Number> getFontMatrix() {
return (List<Number>)this.topDict.get("FontMatrix");
}
public GeneralPath getPath(String selector) throws IOException {
int cid = selectorToCID(selector);
return getType2CharString(cid).getPath();
}
public float getWidth(String selector) throws IOException {
int cid = selectorToCID(selector);
return (float)getType2CharString(cid).getWidth();
}
public boolean hasGlyph(String selector) throws IOException {
int cid = selectorToCID(selector);
return (cid != 0);
}
private int selectorToCID(String selector) {
if (!selector.startsWith("\\"))
throw new IllegalArgumentException("Invalid selector");
return Integer.parseInt(selector.substring(1));
}
private class PrivateType1CharStringReader implements Type1CharStringReader {
private PrivateType1CharStringReader() {}
public Type1CharString getType1CharString(String name) throws IOException {
return CFFCIDFont.this.getType2CharString(0);
}
}
}

View file

@ -0,0 +1,93 @@
package org.apache.fontbox.cff;
import java.util.HashMap;
import java.util.Map;
public abstract class CFFCharset {
private final boolean isCIDFont;
private final Map<Integer, Integer> sidOrCidToGid = new HashMap<Integer, Integer>(250);
private final Map<Integer, Integer> gidToSid = new HashMap<Integer, Integer>(250);
private final Map<String, Integer> nameToSid = new HashMap<String, Integer>(250);
private final Map<Integer, Integer> gidToCid = new HashMap<Integer, Integer>();
private final Map<Integer, String> gidToName = new HashMap<Integer, String>(250);
CFFCharset(boolean isCIDFont) {
this.isCIDFont = isCIDFont;
}
public boolean isCIDFont() {
return this.isCIDFont;
}
public void addSID(int gid, int sid, String name) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
this.sidOrCidToGid.put(Integer.valueOf(sid), Integer.valueOf(gid));
this.gidToSid.put(Integer.valueOf(gid), Integer.valueOf(sid));
this.nameToSid.put(name, Integer.valueOf(sid));
this.gidToName.put(Integer.valueOf(gid), name);
}
public void addCID(int gid, int cid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
this.sidOrCidToGid.put(Integer.valueOf(cid), Integer.valueOf(gid));
this.gidToCid.put(Integer.valueOf(gid), Integer.valueOf(cid));
}
int getSIDForGID(int sid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer gid = this.gidToSid.get(Integer.valueOf(sid));
if (gid == null)
return 0;
return gid;
}
int getGIDForSID(int sid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer gid = this.sidOrCidToGid.get(Integer.valueOf(sid));
if (gid == null)
return 0;
return gid;
}
public int getGIDForCID(int cid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
Integer gid = this.sidOrCidToGid.get(Integer.valueOf(cid));
if (gid == null)
return 0;
return gid;
}
int getSID(String name) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer sid = this.nameToSid.get(name);
if (sid == null)
return 0;
return sid;
}
public String getNameForGID(int gid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
return this.gidToName.get(Integer.valueOf(gid));
}
public int getCIDForGID(int gid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
Integer cid = this.gidToCid.get(Integer.valueOf(gid));
if (cid != null)
return cid;
return 0;
}
}

View file

@ -0,0 +1,32 @@
package org.apache.fontbox.cff;
import java.io.IOException;
public class CFFDataInput extends DataInput {
public CFFDataInput(byte[] buffer) {
super(buffer);
}
public int readCard8() throws IOException {
return readUnsignedByte();
}
public int readCard16() throws IOException {
return readUnsignedShort();
}
public int readOffset(int offSize) throws IOException {
int value = 0;
for (int i = 0; i < offSize; i++)
value = value << 8 | readUnsignedByte();
return value;
}
public int readOffSize() throws IOException {
return readUnsignedByte();
}
public int readSID() throws IOException {
return readUnsignedShort();
}
}

View file

@ -0,0 +1,27 @@
package org.apache.fontbox.cff;
import java.util.HashMap;
import java.util.Map;
import org.apache.fontbox.encoding.Encoding;
public abstract class CFFEncoding extends Encoding {
private final Map<Integer, String> codeToName = new HashMap<Integer, String>(250);
public String getName(int code) {
String name = this.codeToName.get(Integer.valueOf(code));
if (name == null)
return ".notdef";
return name;
}
public void add(int code, int sid, String name) {
this.codeToName.put(Integer.valueOf(code), name);
addCharacterEncoding(code, name);
}
protected void add(int code, int sid) {
String name = CFFStandardString.getName(sid);
this.codeToName.put(Integer.valueOf(code), name);
addCharacterEncoding(code, name);
}
}

View file

@ -0,0 +1,42 @@
package org.apache.fontbox.cff;
public final class CFFExpertCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_EXPERT_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 229, "exclamsmall" }, new Object[] { 230, "Hungarumlautsmall" }, new Object[] { 231, "dollaroldstyle" }, new Object[] { 232, "dollarsuperior" }, new Object[] { 233, "ampersandsmall" }, new Object[] { 234, "Acutesmall" }, new Object[] { 235, "parenleftsuperior" }, new Object[] { 236, "parenrightsuperior" },
new Object[] { 237, "twodotenleader" }, new Object[] { 238, "onedotenleader" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" }, new Object[] { 15, "period" }, new Object[] { 99, "fraction" }, new Object[] { 239, "zerooldstyle" }, new Object[] { 240, "oneoldstyle" }, new Object[] { 241, "twooldstyle" }, new Object[] { 242, "threeoldstyle" },
new Object[] { 243, "fouroldstyle" }, new Object[] { 244, "fiveoldstyle" }, new Object[] { 245, "sixoldstyle" }, new Object[] { 246, "sevenoldstyle" }, new Object[] { 247, "eightoldstyle" }, new Object[] { 248, "nineoldstyle" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 249, "commasuperior" }, new Object[] { 250, "threequartersemdash" },
new Object[] { 251, "periodsuperior" }, new Object[] { 252, "questionsmall" }, new Object[] { 253, "asuperior" }, new Object[] { 254, "bsuperior" }, new Object[] { 255, "centsuperior" }, new Object[] { 256, "dsuperior" }, new Object[] { 257, "esuperior" }, new Object[] { 258, "isuperior" }, new Object[] { 259, "lsuperior" }, new Object[] { 260, "msuperior" },
new Object[] { 261, "nsuperior" }, new Object[] { 262, "osuperior" }, new Object[] { 263, "rsuperior" }, new Object[] { 264, "ssuperior" }, new Object[] { 265, "tsuperior" }, new Object[] { 266, "ff" }, new Object[] { 109, "fi" }, new Object[] { 110, "fl" }, new Object[] { 267, "ffi" }, new Object[] { 268, "ffl" },
new Object[] { 269, "parenleftinferior" }, new Object[] { 270, "parenrightinferior" }, new Object[] { 271, "Circumflexsmall" }, new Object[] { 272, "hyphensuperior" }, new Object[] { 273, "Gravesmall" }, new Object[] { 274, "Asmall" }, new Object[] { 275, "Bsmall" }, new Object[] { 276, "Csmall" }, new Object[] { 277, "Dsmall" }, new Object[] { 278, "Esmall" },
new Object[] { 279, "Fsmall" }, new Object[] { 280, "Gsmall" }, new Object[] { 281, "Hsmall" }, new Object[] { 282, "Ismall" }, new Object[] { 283, "Jsmall" }, new Object[] { 284, "Ksmall" }, new Object[] { 285, "Lsmall" }, new Object[] { 286, "Msmall" }, new Object[] { 287, "Nsmall" }, new Object[] { 288, "Osmall" },
new Object[] { 289, "Psmall" }, new Object[] { 290, "Qsmall" }, new Object[] { 291, "Rsmall" }, new Object[] { 292, "Ssmall" }, new Object[] { 293, "Tsmall" }, new Object[] { 294, "Usmall" }, new Object[] { 295, "Vsmall" }, new Object[] { 296, "Wsmall" }, new Object[] { 297, "Xsmall" }, new Object[] { 298, "Ysmall" },
new Object[] { 299, "Zsmall" }, new Object[] { 300, "colonmonetary" }, new Object[] { 301, "onefitted" }, new Object[] { 302, "rupiah" }, new Object[] { 303, "Tildesmall" }, new Object[] { 304, "exclamdownsmall" }, new Object[] { 305, "centoldstyle" }, new Object[] { 306, "Lslashsmall" }, new Object[] { 307, "Scaronsmall" }, new Object[] { 308, "Zcaronsmall" },
new Object[] { 309, "Dieresissmall" }, new Object[] { 310, "Brevesmall" }, new Object[] { 311, "Caronsmall" }, new Object[] { 312, "Dotaccentsmall" }, new Object[] { 313, "Macronsmall" }, new Object[] { 314, "figuredash" }, new Object[] { 315, "hypheninferior" }, new Object[] { 316, "Ogoneksmall" }, new Object[] { 317, "Ringsmall" }, new Object[] { 318, "Cedillasmall" },
new Object[] { 158, "onequarter" }, new Object[] { 155, "onehalf" }, new Object[] { 163, "threequarters" }, new Object[] { 319, "questiondownsmall" }, new Object[] { 320, "oneeighth" }, new Object[] { 321, "threeeighths" }, new Object[] { 322, "fiveeighths" }, new Object[] { 323, "seveneighths" }, new Object[] { 324, "onethird" }, new Object[] { 325, "twothirds" },
new Object[] { 326, "zerosuperior" }, new Object[] { 150, "onesuperior" }, new Object[] { 164, "twosuperior" }, new Object[] { 169, "threesuperior" }, new Object[] { 327, "foursuperior" }, new Object[] { 328, "fivesuperior" }, new Object[] { 329, "sixsuperior" }, new Object[] { 330, "sevensuperior" }, new Object[] { 331, "eightsuperior" }, new Object[] { 332, "ninesuperior" },
new Object[] { 333, "zeroinferior" }, new Object[] { 334, "oneinferior" }, new Object[] { 335, "twoinferior" }, new Object[] { 336, "threeinferior" }, new Object[] { 337, "fourinferior" }, new Object[] { 338, "fiveinferior" }, new Object[] { 339, "sixinferior" }, new Object[] { 340, "seveninferior" }, new Object[] { 341, "eightinferior" }, new Object[] { 342, "nineinferior" },
new Object[] { 343, "centinferior" }, new Object[] { 344, "dollarinferior" }, new Object[] { 345, "periodinferior" }, new Object[] { 346, "commainferior" }, new Object[] { 347, "Agravesmall" }, new Object[] { 348, "Aacutesmall" }, new Object[] { 349, "Acircumflexsmall" }, new Object[] { 350, "Atildesmall" }, new Object[] { 351, "Adieresissmall" }, new Object[] { 352, "Aringsmall" },
new Object[] { 353, "AEsmall" }, new Object[] { 354, "Ccedillasmall" }, new Object[] { 355, "Egravesmall" }, new Object[] { 356, "Eacutesmall" }, new Object[] { 357, "Ecircumflexsmall" }, new Object[] { 358, "Edieresissmall" }, new Object[] { 359, "Igravesmall" }, new Object[] { 360, "Iacutesmall" }, new Object[] { 361, "Icircumflexsmall" }, new Object[] { 362, "Idieresissmall" },
new Object[] { 363, "Ethsmall" }, new Object[] { 364, "Ntildesmall" }, new Object[] { 365, "Ogravesmall" }, new Object[] { 366, "Oacutesmall" }, new Object[] { 367, "Ocircumflexsmall" }, new Object[] { 368, "Otildesmall" }, new Object[] { 369, "Odieresissmall" }, new Object[] { 370, "OEsmall" }, new Object[] { 371, "Oslashsmall" }, new Object[] { 372, "Ugravesmall" },
new Object[] { 373, "Uacutesmall" }, new Object[] { 374, "Ucircumflexsmall" }, new Object[] { 375, "Udieresissmall" }, new Object[] { 376, "Yacutesmall" }, new Object[] { 377, "Thornsmall" }, new Object[] { 378, "Ydieresissmall" } };
private CFFExpertCharset() {
super(false);
}
public static CFFExpertCharset getInstance() {
return INSTANCE;
}
private static final CFFExpertCharset INSTANCE = new CFFExpertCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_EXPERT_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,46 @@
package org.apache.fontbox.cff;
public final class CFFExpertEncoding extends CFFEncoding {
private static final int CHAR_CODE = 0;
private static final int CHAR_SID = 1;
private static final int[][] CFF_EXPERT_ENCODING_TABLE = new int[][] {
new int[] { 0, 0 }, new int[] { 1, 0 }, new int[] { 2, 0 }, new int[] { 3, 0 }, new int[] { 4, 0 }, new int[] { 5, 0 }, new int[] { 6, 0 }, new int[] { 7, 0 }, new int[] { 8, 0 }, new int[] { 9, 0 },
new int[] { 10, 0 }, new int[] { 11, 0 }, new int[] { 12, 0 }, new int[] { 13, 0 }, new int[] { 14, 0 }, new int[] { 15, 0 }, new int[] { 16, 0 }, new int[] { 17, 0 }, new int[] { 18, 0 }, new int[] { 19, 0 },
new int[] { 20, 0 }, new int[] { 21, 0 }, new int[] { 22, 0 }, new int[] { 23, 0 }, new int[] { 24, 0 }, new int[] { 25, 0 }, new int[] { 26, 0 }, new int[] { 27, 0 }, new int[] { 28, 0 }, new int[] { 29, 0 },
new int[] { 30, 0 }, new int[] { 31, 0 }, new int[] { 32, 1 }, new int[] { 33, 229 }, new int[] { 34, 230 }, new int[] { 35, 0 }, new int[] { 36, 231 }, new int[] { 37, 232 }, new int[] { 38, 233 }, new int[] { 39, 234 },
new int[] { 40, 235 }, new int[] { 41, 236 }, new int[] { 42, 237 }, new int[] { 43, 238 }, new int[] { 44, 13 }, new int[] { 45, 14 }, new int[] { 46, 15 }, new int[] { 47, 99 }, new int[] { 48, 239 }, new int[] { 49, 240 },
new int[] { 50, 241 }, new int[] { 51, 242 }, new int[] { 52, 243 }, new int[] { 53, 244 }, new int[] { 54, 245 }, new int[] { 55, 246 }, new int[] { 56, 247 }, new int[] { 57, 248 }, new int[] { 58, 27 }, new int[] { 59, 28 },
new int[] { 60, 249 }, new int[] { 61, 250 }, new int[] { 62, 251 }, new int[] { 63, 252 }, new int[] { 64, 0 }, new int[] { 65, 253 }, new int[] { 66, 254 }, new int[] { 67, 255 }, new int[] { 68, 256 }, new int[] { 69, 257 },
new int[] { 70, 0 }, new int[] { 71, 0 }, new int[] { 72, 0 }, new int[] { 73, 258 }, new int[] { 74, 0 }, new int[] { 75, 0 }, new int[] { 76, 259 }, new int[] { 77, 260 }, new int[] { 78, 261 }, new int[] { 79, 262 },
new int[] { 80, 0 }, new int[] { 81, 0 }, new int[] { 82, 263 }, new int[] { 83, 264 }, new int[] { 84, 265 }, new int[] { 85, 0 }, new int[] { 86, 266 }, new int[] { 87, 109 }, new int[] { 88, 110 }, new int[] { 89, 267 },
new int[] { 90, 268 }, new int[] { 91, 269 }, new int[] { 92, 0 }, new int[] { 93, 270 }, new int[] { 94, 271 }, new int[] { 95, 272 }, new int[] { 96, 273 }, new int[] { 97, 274 }, new int[] { 98, 275 }, new int[] { 99, 276 },
new int[] { 100, 277 }, new int[] { 101, 278 }, new int[] { 102, 279 }, new int[] { 103, 280 }, new int[] { 104, 281 }, new int[] { 105, 282 }, new int[] { 106, 283 }, new int[] { 107, 284 }, new int[] { 108, 285 }, new int[] { 109, 286 },
new int[] { 110, 287 }, new int[] { 111, 288 }, new int[] { 112, 289 }, new int[] { 113, 290 }, new int[] { 114, 291 }, new int[] { 115, 292 }, new int[] { 116, 293 }, new int[] { 117, 294 }, new int[] { 118, 295 }, new int[] { 119, 296 },
new int[] { 120, 297 }, new int[] { 121, 298 }, new int[] { 122, 299 }, new int[] { 123, 300 }, new int[] { 124, 301 }, new int[] { 125, 302 }, new int[] { 126, 303 }, new int[] { 127, 0 }, new int[] { 128, 0 }, new int[] { 129, 0 },
new int[] { 130, 0 }, new int[] { 131, 0 }, new int[] { 132, 0 }, new int[] { 133, 0 }, new int[] { 134, 0 }, new int[] { 135, 0 }, new int[] { 136, 0 }, new int[] { 137, 0 }, new int[] { 138, 0 }, new int[] { 139, 0 },
new int[] { 140, 0 }, new int[] { 141, 0 }, new int[] { 142, 0 }, new int[] { 143, 0 }, new int[] { 144, 0 }, new int[] { 145, 0 }, new int[] { 146, 0 }, new int[] { 147, 0 }, new int[] { 148, 0 }, new int[] { 149, 0 },
new int[] { 150, 0 }, new int[] { 151, 0 }, new int[] { 152, 0 }, new int[] { 153, 0 }, new int[] { 154, 0 }, new int[] { 155, 0 }, new int[] { 156, 0 }, new int[] { 157, 0 }, new int[] { 158, 0 }, new int[] { 159, 0 },
new int[] { 160, 0 }, new int[] { 161, 304 }, new int[] { 162, 305 }, new int[] { 163, 306 }, new int[] { 164, 0 }, new int[] { 165, 0 }, new int[] { 166, 307 }, new int[] { 167, 308 }, new int[] { 168, 309 }, new int[] { 169, 310 },
new int[] { 170, 311 }, new int[] { 171, 0 }, new int[] { 172, 312 }, new int[] { 173, 0 }, new int[] { 174, 0 }, new int[] { 175, 313 }, new int[] { 176, 0 }, new int[] { 177, 0 }, new int[] { 178, 314 }, new int[] { 179, 315 },
new int[] { 180, 0 }, new int[] { 181, 0 }, new int[] { 182, 316 }, new int[] { 183, 317 }, new int[] { 184, 318 }, new int[] { 185, 0 }, new int[] { 186, 0 }, new int[] { 187, 0 }, new int[] { 188, 158 }, new int[] { 189, 155 },
new int[] { 190, 163 }, new int[] { 191, 319 }, new int[] { 192, 320 }, new int[] { 193, 321 }, new int[] { 194, 322 }, new int[] { 195, 323 }, new int[] { 196, 324 }, new int[] { 197, 325 }, new int[] { 198, 0 }, new int[] { 199, 0 },
new int[] { 200, 326 }, new int[] { 201, 150 }, new int[] { 202, 164 }, new int[] { 203, 169 }, new int[] { 204, 327 }, new int[] { 205, 328 }, new int[] { 206, 329 }, new int[] { 207, 330 }, new int[] { 208, 331 }, new int[] { 209, 332 },
new int[] { 210, 333 }, new int[] { 211, 334 }, new int[] { 212, 335 }, new int[] { 213, 336 }, new int[] { 214, 337 }, new int[] { 215, 338 }, new int[] { 216, 339 }, new int[] { 217, 340 }, new int[] { 218, 341 }, new int[] { 219, 342 },
new int[] { 220, 343 }, new int[] { 221, 344 }, new int[] { 222, 345 }, new int[] { 223, 346 }, new int[] { 224, 347 }, new int[] { 225, 348 }, new int[] { 226, 349 }, new int[] { 227, 350 }, new int[] { 228, 351 }, new int[] { 229, 352 },
new int[] { 230, 353 }, new int[] { 231, 354 }, new int[] { 232, 355 }, new int[] { 233, 356 }, new int[] { 234, 357 }, new int[] { 235, 358 }, new int[] { 236, 359 }, new int[] { 237, 360 }, new int[] { 238, 361 }, new int[] { 239, 362 },
new int[] { 240, 363 }, new int[] { 241, 364 }, new int[] { 242, 365 }, new int[] { 243, 366 }, new int[] { 244, 367 }, new int[] { 245, 368 }, new int[] { 246, 369 }, new int[] { 247, 370 }, new int[] { 248, 371 }, new int[] { 249, 372 },
new int[] { 250, 373 }, new int[] { 251, 374 }, new int[] { 252, 375 }, new int[] { 253, 376 }, new int[] { 254, 377 }, new int[] { 255, 378 } };
public static CFFExpertEncoding getInstance() {
return INSTANCE;
}
private static final CFFExpertEncoding INSTANCE = new CFFExpertEncoding();
static {
for (int[] encodingEntry : CFF_EXPERT_ENCODING_TABLE)
INSTANCE.add(encodingEntry[0], encodingEntry[1]);
}
}

View file

@ -0,0 +1,34 @@
package org.apache.fontbox.cff;
public final class CFFExpertSubsetCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_EXPERT_SUBSET_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 231, "dollaroldstyle" }, new Object[] { 232, "dollarsuperior" }, new Object[] { 235, "parenleftsuperior" }, new Object[] { 236, "parenrightsuperior" }, new Object[] { 237, "twodotenleader" }, new Object[] { 238, "onedotenleader" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" },
new Object[] { 15, "period" }, new Object[] { 99, "fraction" }, new Object[] { 239, "zerooldstyle" }, new Object[] { 240, "oneoldstyle" }, new Object[] { 241, "twooldstyle" }, new Object[] { 242, "threeoldstyle" }, new Object[] { 243, "fouroldstyle" }, new Object[] { 244, "fiveoldstyle" }, new Object[] { 245, "sixoldstyle" }, new Object[] { 246, "sevenoldstyle" },
new Object[] { 247, "eightoldstyle" }, new Object[] { 248, "nineoldstyle" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 249, "commasuperior" }, new Object[] { 250, "threequartersemdash" }, new Object[] { 251, "periodsuperior" }, new Object[] { 253, "asuperior" }, new Object[] { 254, "bsuperior" }, new Object[] { 255, "centsuperior" },
new Object[] { 256, "dsuperior" }, new Object[] { 257, "esuperior" }, new Object[] { 258, "isuperior" }, new Object[] { 259, "lsuperior" }, new Object[] { 260, "msuperior" }, new Object[] { 261, "nsuperior" }, new Object[] { 262, "osuperior" }, new Object[] { 263, "rsuperior" }, new Object[] { 264, "ssuperior" }, new Object[] { 265, "tsuperior" },
new Object[] { 266, "ff" }, new Object[] { 109, "fi" }, new Object[] { 110, "fl" }, new Object[] { 267, "ffi" }, new Object[] { 268, "ffl" }, new Object[] { 269, "parenleftinferior" }, new Object[] { 270, "parenrightinferior" }, new Object[] { 272, "hyphensuperior" }, new Object[] { 300, "colonmonetary" }, new Object[] { 301, "onefitted" },
new Object[] { 302, "rupiah" }, new Object[] { 305, "centoldstyle" }, new Object[] { 314, "figuredash" }, new Object[] { 315, "hypheninferior" }, new Object[] { 158, "onequarter" }, new Object[] { 155, "onehalf" }, new Object[] { 163, "threequarters" }, new Object[] { 320, "oneeighth" }, new Object[] { 321, "threeeighths" }, new Object[] { 322, "fiveeighths" },
new Object[] { 323, "seveneighths" }, new Object[] { 324, "onethird" }, new Object[] { 325, "twothirds" }, new Object[] { 326, "zerosuperior" }, new Object[] { 150, "onesuperior" }, new Object[] { 164, "twosuperior" }, new Object[] { 169, "threesuperior" }, new Object[] { 327, "foursuperior" }, new Object[] { 328, "fivesuperior" }, new Object[] { 329, "sixsuperior" },
new Object[] { 330, "sevensuperior" }, new Object[] { 331, "eightsuperior" }, new Object[] { 332, "ninesuperior" }, new Object[] { 333, "zeroinferior" }, new Object[] { 334, "oneinferior" }, new Object[] { 335, "twoinferior" }, new Object[] { 336, "threeinferior" }, new Object[] { 337, "fourinferior" }, new Object[] { 338, "fiveinferior" }, new Object[] { 339, "sixinferior" },
new Object[] { 340, "seveninferior" }, new Object[] { 341, "eightinferior" }, new Object[] { 342, "nineinferior" }, new Object[] { 343, "centinferior" }, new Object[] { 344, "dollarinferior" }, new Object[] { 345, "periodinferior" }, new Object[] { 346, "commainferior" } };
private CFFExpertSubsetCharset() {
super(false);
}
public static CFFExpertSubsetCharset getInstance() {
return INSTANCE;
}
private static final CFFExpertSubsetCharset INSTANCE = new CFFExpertSubsetCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_EXPERT_SUBSET_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,85 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.FontBoxFont;
import org.apache.fontbox.util.BoundingBox;
public abstract class CFFFont implements FontBoxFont {
protected String fontName;
protected final Map<String, Object> topDict = new LinkedHashMap<String, Object>();
protected CFFCharset charset;
protected byte[][] charStrings;
protected byte[][] globalSubrIndex;
private CFFParser.ByteSource source;
public String getName() {
return this.fontName;
}
void setName(String name) {
this.fontName = name;
}
public void addValueToTopDict(String name, Object value) {
if (value != null)
this.topDict.put(name, value);
}
public Map<String, Object> getTopDict() {
return this.topDict;
}
public abstract List<Number> getFontMatrix();
public BoundingBox getFontBBox() {
List<Number> numbers = (List<Number>)this.topDict.get("FontBBox");
return new BoundingBox(numbers);
}
public CFFCharset getCharset() {
return this.charset;
}
void setCharset(CFFCharset charset) {
this.charset = charset;
}
public final List<byte[]> getCharStringBytes() {
return Arrays.<byte[]>asList(this.charStrings);
}
final void setData(CFFParser.ByteSource source) {
this.source = source;
}
public byte[] getData() throws IOException {
return this.source.getBytes();
}
public int getNumCharStrings() {
return this.charStrings.length;
}
void setGlobalSubrIndex(byte[][] globalSubrIndexValue) {
this.globalSubrIndex = globalSubrIndexValue;
}
public List<byte[]> getGlobalSubrIndex() {
return Arrays.<byte[]>asList(this.globalSubrIndex);
}
public abstract Type2CharString getType2CharString(int paramInt) throws IOException;
public String toString() {
return getClass().getSimpleName() + "[name=" + this.fontName + ", topDict=" + this.topDict + ", charset=" + this.charset + ", charStrings=" + Arrays.deepToString((Object[])this.charStrings) + "]";
}
}

View file

@ -0,0 +1,48 @@
package org.apache.fontbox.cff;
public final class CFFISOAdobeCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_ISO_ADOBE_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 2, "exclam" }, new Object[] { 3, "quotedbl" }, new Object[] { 4, "numbersign" }, new Object[] { 5, "dollar" }, new Object[] { 6, "percent" }, new Object[] { 7, "ampersand" }, new Object[] { 8, "quoteright" }, new Object[] { 9, "parenleft" },
new Object[] { 10, "parenright" }, new Object[] { 11, "asterisk" }, new Object[] { 12, "plus" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" }, new Object[] { 15, "period" }, new Object[] { 16, "slash" }, new Object[] { 17, "zero" }, new Object[] { 18, "one" }, new Object[] { 19, "two" },
new Object[] { 20, "three" }, new Object[] { 21, "four" }, new Object[] { 22, "five" }, new Object[] { 23, "six" }, new Object[] { 24, "seven" }, new Object[] { 25, "eight" }, new Object[] { 26, "nine" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 29, "less" },
new Object[] { 30, "equal" }, new Object[] { 31, "greater" }, new Object[] { 32, "question" }, new Object[] { 33, "at" }, new Object[] { 34, "A" }, new Object[] { 35, "B" }, new Object[] { 36, "C" }, new Object[] { 37, "D" }, new Object[] { 38, "E" }, new Object[] { 39, "F" },
new Object[] { 40, "G" }, new Object[] { 41, "H" }, new Object[] { 42, "I" }, new Object[] { 43, "J" }, new Object[] { 44, "K" }, new Object[] { 45, "L" }, new Object[] { 46, "M" }, new Object[] { 47, "N" }, new Object[] { 48, "O" }, new Object[] { 49, "P" },
new Object[] { 50, "Q" }, new Object[] { 51, "R" }, new Object[] { 52, "S" }, new Object[] { 53, "T" }, new Object[] { 54, "U" }, new Object[] { 55, "V" }, new Object[] { 56, "W" }, new Object[] { 57, "X" }, new Object[] { 58, "Y" }, new Object[] { 59, "Z" },
new Object[] { 60, "bracketleft" }, new Object[] { 61, "backslash" }, new Object[] { 62, "bracketright" }, new Object[] { 63, "asciicircum" }, new Object[] { 64, "underscore" }, new Object[] { 65, "quoteleft" }, new Object[] { 66, "a" }, new Object[] { 67, "b" }, new Object[] { 68, "c" }, new Object[] { 69, "d" },
new Object[] { 70, "e" }, new Object[] { 71, "f" }, new Object[] { 72, "g" }, new Object[] { 73, "h" }, new Object[] { 74, "i" }, new Object[] { 75, "j" }, new Object[] { 76, "k" }, new Object[] { 77, "l" }, new Object[] { 78, "m" }, new Object[] { 79, "n" },
new Object[] { 80, "o" }, new Object[] { 81, "p" }, new Object[] { 82, "q" }, new Object[] { 83, "r" }, new Object[] { 84, "s" }, new Object[] { 85, "t" }, new Object[] { 86, "u" }, new Object[] { 87, "v" }, new Object[] { 88, "w" }, new Object[] { 89, "x" },
new Object[] { 90, "y" }, new Object[] { 91, "z" }, new Object[] { 92, "braceleft" }, new Object[] { 93, "bar" }, new Object[] { 94, "braceright" }, new Object[] { 95, "asciitilde" }, new Object[] { 96, "exclamdown" }, new Object[] { 97, "cent" }, new Object[] { 98, "sterling" }, new Object[] { 99, "fraction" },
new Object[] { 100, "yen" }, new Object[] { 101, "florin" }, new Object[] { 102, "section" }, new Object[] { 103, "currency" }, new Object[] { 104, "quotesingle" }, new Object[] { 105, "quotedblleft" }, new Object[] { 106, "guillemotleft" }, new Object[] { 107, "guilsinglleft" }, new Object[] { 108, "guilsinglright" }, new Object[] { 109, "fi" },
new Object[] { 110, "fl" }, new Object[] { 111, "endash" }, new Object[] { 112, "dagger" }, new Object[] { 113, "daggerdbl" }, new Object[] { 114, "periodcentered" }, new Object[] { 115, "paragraph" }, new Object[] { 116, "bullet" }, new Object[] { 117, "quotesinglbase" }, new Object[] { 118, "quotedblbase" }, new Object[] { 119, "quotedblright" },
new Object[] { 120, "guillemotright" }, new Object[] { 121, "ellipsis" }, new Object[] { 122, "perthousand" }, new Object[] { 123, "questiondown" }, new Object[] { 124, "grave" }, new Object[] { 125, "acute" }, new Object[] { 126, "circumflex" }, new Object[] { 127, "tilde" }, new Object[] { 128, "macron" }, new Object[] { 129, "breve" },
new Object[] { 130, "dotaccent" }, new Object[] { 131, "dieresis" }, new Object[] { 132, "ring" }, new Object[] { 133, "cedilla" }, new Object[] { 134, "hungarumlaut" }, new Object[] { 135, "ogonek" }, new Object[] { 136, "caron" }, new Object[] { 137, "emdash" }, new Object[] { 138, "AE" }, new Object[] { 139, "ordfeminine" },
new Object[] { 140, "Lslash" }, new Object[] { 141, "Oslash" }, new Object[] { 142, "OE" }, new Object[] { 143, "ordmasculine" }, new Object[] { 144, "ae" }, new Object[] { 145, "dotlessi" }, new Object[] { 146, "lslash" }, new Object[] { 147, "oslash" }, new Object[] { 148, "oe" }, new Object[] { 149, "germandbls" },
new Object[] { 150, "onesuperior" }, new Object[] { 151, "logicalnot" }, new Object[] { 152, "mu" }, new Object[] { 153, "trademark" }, new Object[] { 154, "Eth" }, new Object[] { 155, "onehalf" }, new Object[] { 156, "plusminus" }, new Object[] { 157, "Thorn" }, new Object[] { 158, "onequarter" }, new Object[] { 159, "divide" },
new Object[] { 160, "brokenbar" }, new Object[] { 161, "degree" }, new Object[] { 162, "thorn" }, new Object[] { 163, "threequarters" }, new Object[] { 164, "twosuperior" }, new Object[] { 165, "registered" }, new Object[] { 166, "minus" }, new Object[] { 167, "eth" }, new Object[] { 168, "multiply" }, new Object[] { 169, "threesuperior" },
new Object[] { 170, "copyright" }, new Object[] { 171, "Aacute" }, new Object[] { 172, "Acircumflex" }, new Object[] { 173, "Adieresis" }, new Object[] { 174, "Agrave" }, new Object[] { 175, "Aring" }, new Object[] { 176, "Atilde" }, new Object[] { 177, "Ccedilla" }, new Object[] { 178, "Eacute" }, new Object[] { 179, "Ecircumflex" },
new Object[] { 180, "Edieresis" }, new Object[] { 181, "Egrave" }, new Object[] { 182, "Iacute" }, new Object[] { 183, "Icircumflex" }, new Object[] { 184, "Idieresis" }, new Object[] { 185, "Igrave" }, new Object[] { 186, "Ntilde" }, new Object[] { 187, "Oacute" }, new Object[] { 188, "Ocircumflex" }, new Object[] { 189, "Odieresis" },
new Object[] { 190, "Ograve" }, new Object[] { 191, "Otilde" }, new Object[] { 192, "Scaron" }, new Object[] { 193, "Uacute" }, new Object[] { 194, "Ucircumflex" }, new Object[] { 195, "Udieresis" }, new Object[] { 196, "Ugrave" }, new Object[] { 197, "Yacute" }, new Object[] { 198, "Ydieresis" }, new Object[] { 199, "Zcaron" },
new Object[] { 200, "aacute" }, new Object[] { 201, "acircumflex" }, new Object[] { 202, "adieresis" }, new Object[] { 203, "agrave" }, new Object[] { 204, "aring" }, new Object[] { 205, "atilde" }, new Object[] { 206, "ccedilla" }, new Object[] { 207, "eacute" }, new Object[] { 208, "ecircumflex" }, new Object[] { 209, "edieresis" },
new Object[] { 210, "egrave" }, new Object[] { 211, "iacute" }, new Object[] { 212, "icircumflex" }, new Object[] { 213, "idieresis" }, new Object[] { 214, "igrave" }, new Object[] { 215, "ntilde" }, new Object[] { 216, "oacute" }, new Object[] { 217, "ocircumflex" }, new Object[] { 218, "odieresis" }, new Object[] { 219, "ograve" },
new Object[] { 220, "otilde" }, new Object[] { 221, "scaron" }, new Object[] { 222, "uacute" }, new Object[] { 223, "ucircumflex" }, new Object[] { 224, "udieresis" }, new Object[] { 225, "ugrave" }, new Object[] { 226, "yacute" }, new Object[] { 227, "ydieresis" }, new Object[] { 228, "zcaron" } };
private CFFISOAdobeCharset() {
super(false);
}
public static CFFISOAdobeCharset getInstance() {
return INSTANCE;
}
private static final CFFISOAdobeCharset INSTANCE = new CFFISOAdobeCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_ISO_ADOBE_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,161 @@
package org.apache.fontbox.cff;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
public final class CFFOperator {
private Key operatorKey = null;
private String operatorName = null;
private CFFOperator(Key key, String name) {
setKey(key);
setName(name);
}
public Key getKey() {
return this.operatorKey;
}
private void setKey(Key key) {
this.operatorKey = key;
}
public String getName() {
return this.operatorName;
}
private void setName(String name) {
this.operatorName = name;
}
public String toString() {
return getName();
}
public int hashCode() {
return getKey().hashCode();
}
public boolean equals(Object object) {
if (object instanceof CFFOperator) {
CFFOperator that = (CFFOperator)object;
return getKey().equals(that.getKey());
}
return false;
}
private static void register(Key key, String name) {
CFFOperator operator = new CFFOperator(key, name);
keyMap.put(key, operator);
nameMap.put(name, operator);
}
public static CFFOperator getOperator(Key key) {
return keyMap.get(key);
}
public static CFFOperator getOperator(String name) {
return nameMap.get(name);
}
public static class Key {
private int[] value = null;
public Key(int b0) {
this(new int[] { b0 });
}
public Key(int b0, int b1) {
this(new int[] { b0, b1 });
}
private Key(int[] value) {
setValue(value);
}
public int[] getValue() {
return this.value;
}
private void setValue(int[] value) {
this.value = value;
}
public String toString() {
return Arrays.toString(getValue());
}
public int hashCode() {
return Arrays.hashCode(getValue());
}
public boolean equals(Object object) {
if (object instanceof Key) {
Key that = (Key)object;
return Arrays.equals(getValue(), that.getValue());
}
return false;
}
}
private static Map<Key, CFFOperator> keyMap = new LinkedHashMap<Key, CFFOperator>(52);
private static Map<String, CFFOperator> nameMap = new LinkedHashMap<String, CFFOperator>(52);
static {
register(new Key(0), "version");
register(new Key(1), "Notice");
register(new Key(12, 0), "Copyright");
register(new Key(2), "FullName");
register(new Key(3), "FamilyName");
register(new Key(4), "Weight");
register(new Key(12, 1), "isFixedPitch");
register(new Key(12, 2), "ItalicAngle");
register(new Key(12, 3), "UnderlinePosition");
register(new Key(12, 4), "UnderlineThickness");
register(new Key(12, 5), "PaintType");
register(new Key(12, 6), "CharstringType");
register(new Key(12, 7), "FontMatrix");
register(new Key(13), "UniqueID");
register(new Key(5), "FontBBox");
register(new Key(12, 8), "StrokeWidth");
register(new Key(14), "XUID");
register(new Key(15), "charset");
register(new Key(16), "Encoding");
register(new Key(17), "CharStrings");
register(new Key(18), "Private");
register(new Key(12, 20), "SyntheticBase");
register(new Key(12, 21), "PostScript");
register(new Key(12, 22), "BaseFontName");
register(new Key(12, 23), "BaseFontBlend");
register(new Key(12, 30), "ROS");
register(new Key(12, 31), "CIDFontVersion");
register(new Key(12, 32), "CIDFontRevision");
register(new Key(12, 33), "CIDFontType");
register(new Key(12, 34), "CIDCount");
register(new Key(12, 35), "UIDBase");
register(new Key(12, 36), "FDArray");
register(new Key(12, 37), "FDSelect");
register(new Key(12, 38), "FontName");
register(new Key(6), "BlueValues");
register(new Key(7), "OtherBlues");
register(new Key(8), "FamilyBlues");
register(new Key(9), "FamilyOtherBlues");
register(new Key(12, 9), "BlueScale");
register(new Key(12, 10), "BlueShift");
register(new Key(12, 11), "BlueFuzz");
register(new Key(10), "StdHW");
register(new Key(11), "StdVW");
register(new Key(12, 12), "StemSnapH");
register(new Key(12, 13), "StemSnapV");
register(new Key(12, 14), "ForceBold");
register(new Key(12, 15), "LanguageGroup");
register(new Key(12, 16), "ExpansionFactor");
register(new Key(12, 17), "initialRandomSeed");
register(new Key(19), "Subrs");
register(new Key(20), "defaultWidthX");
register(new Key(21), "nominalWidthX");
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,46 @@
package org.apache.fontbox.cff;
public final class CFFStandardEncoding extends CFFEncoding {
private static final int CHAR_CODE = 0;
private static final int CHAR_SID = 1;
private static final int[][] CFF_STANDARD_ENCODING_TABLE = new int[][] {
new int[] { 0, 0 }, new int[] { 1, 0 }, new int[] { 2, 0 }, new int[] { 3, 0 }, new int[] { 4, 0 }, new int[] { 5, 0 }, new int[] { 6, 0 }, new int[] { 7, 0 }, new int[] { 8, 0 }, new int[] { 9, 0 },
new int[] { 10, 0 }, new int[] { 11, 0 }, new int[] { 12, 0 }, new int[] { 13, 0 }, new int[] { 14, 0 }, new int[] { 15, 0 }, new int[] { 16, 0 }, new int[] { 17, 0 }, new int[] { 18, 0 }, new int[] { 19, 0 },
new int[] { 20, 0 }, new int[] { 21, 0 }, new int[] { 22, 0 }, new int[] { 23, 0 }, new int[] { 24, 0 }, new int[] { 25, 0 }, new int[] { 26, 0 }, new int[] { 27, 0 }, new int[] { 28, 0 }, new int[] { 29, 0 },
new int[] { 30, 0 }, new int[] { 31, 0 }, new int[] { 32, 1 }, new int[] { 33, 2 }, new int[] { 34, 3 }, new int[] { 35, 4 }, new int[] { 36, 5 }, new int[] { 37, 6 }, new int[] { 38, 7 }, new int[] { 39, 8 },
new int[] { 40, 9 }, new int[] { 41, 10 }, new int[] { 42, 11 }, new int[] { 43, 12 }, new int[] { 44, 13 }, new int[] { 45, 14 }, new int[] { 46, 15 }, new int[] { 47, 16 }, new int[] { 48, 17 }, new int[] { 49, 18 },
new int[] { 50, 19 }, new int[] { 51, 20 }, new int[] { 52, 21 }, new int[] { 53, 22 }, new int[] { 54, 23 }, new int[] { 55, 24 }, new int[] { 56, 25 }, new int[] { 57, 26 }, new int[] { 58, 27 }, new int[] { 59, 28 },
new int[] { 60, 29 }, new int[] { 61, 30 }, new int[] { 62, 31 }, new int[] { 63, 32 }, new int[] { 64, 33 }, new int[] { 65, 34 }, new int[] { 66, 35 }, new int[] { 67, 36 }, new int[] { 68, 37 }, new int[] { 69, 38 },
new int[] { 70, 39 }, new int[] { 71, 40 }, new int[] { 72, 41 }, new int[] { 73, 42 }, new int[] { 74, 43 }, new int[] { 75, 44 }, new int[] { 76, 45 }, new int[] { 77, 46 }, new int[] { 78, 47 }, new int[] { 79, 48 },
new int[] { 80, 49 }, new int[] { 81, 50 }, new int[] { 82, 51 }, new int[] { 83, 52 }, new int[] { 84, 53 }, new int[] { 85, 54 }, new int[] { 86, 55 }, new int[] { 87, 56 }, new int[] { 88, 57 }, new int[] { 89, 58 },
new int[] { 90, 59 }, new int[] { 91, 60 }, new int[] { 92, 61 }, new int[] { 93, 62 }, new int[] { 94, 63 }, new int[] { 95, 64 }, new int[] { 96, 65 }, new int[] { 97, 66 }, new int[] { 98, 67 }, new int[] { 99, 68 },
new int[] { 100, 69 }, new int[] { 101, 70 }, new int[] { 102, 71 }, new int[] { 103, 72 }, new int[] { 104, 73 }, new int[] { 105, 74 }, new int[] { 106, 75 }, new int[] { 107, 76 }, new int[] { 108, 77 }, new int[] { 109, 78 },
new int[] { 110, 79 }, new int[] { 111, 80 }, new int[] { 112, 81 }, new int[] { 113, 82 }, new int[] { 114, 83 }, new int[] { 115, 84 }, new int[] { 116, 85 }, new int[] { 117, 86 }, new int[] { 118, 87 }, new int[] { 119, 88 },
new int[] { 120, 89 }, new int[] { 121, 90 }, new int[] { 122, 91 }, new int[] { 123, 92 }, new int[] { 124, 93 }, new int[] { 125, 94 }, new int[] { 126, 95 }, new int[] { 127, 0 }, new int[] { 128, 0 }, new int[] { 129, 0 },
new int[] { 130, 0 }, new int[] { 131, 0 }, new int[] { 132, 0 }, new int[] { 133, 0 }, new int[] { 134, 0 }, new int[] { 135, 0 }, new int[] { 136, 0 }, new int[] { 137, 0 }, new int[] { 138, 0 }, new int[] { 139, 0 },
new int[] { 140, 0 }, new int[] { 141, 0 }, new int[] { 142, 0 }, new int[] { 143, 0 }, new int[] { 144, 0 }, new int[] { 145, 0 }, new int[] { 146, 0 }, new int[] { 147, 0 }, new int[] { 148, 0 }, new int[] { 149, 0 },
new int[] { 150, 0 }, new int[] { 151, 0 }, new int[] { 152, 0 }, new int[] { 153, 0 }, new int[] { 154, 0 }, new int[] { 155, 0 }, new int[] { 156, 0 }, new int[] { 157, 0 }, new int[] { 158, 0 }, new int[] { 159, 0 },
new int[] { 160, 0 }, new int[] { 161, 96 }, new int[] { 162, 97 }, new int[] { 163, 98 }, new int[] { 164, 99 }, new int[] { 165, 100 }, new int[] { 166, 101 }, new int[] { 167, 102 }, new int[] { 168, 103 }, new int[] { 169, 104 },
new int[] { 170, 105 }, new int[] { 171, 106 }, new int[] { 172, 107 }, new int[] { 173, 108 }, new int[] { 174, 109 }, new int[] { 175, 110 }, new int[] { 176, 0 }, new int[] { 177, 111 }, new int[] { 178, 112 }, new int[] { 179, 113 },
new int[] { 180, 114 }, new int[] { 181, 0 }, new int[] { 182, 115 }, new int[] { 183, 116 }, new int[] { 184, 117 }, new int[] { 185, 118 }, new int[] { 186, 119 }, new int[] { 187, 120 }, new int[] { 188, 121 }, new int[] { 189, 122 },
new int[] { 190, 0 }, new int[] { 191, 123 }, new int[] { 192, 0 }, new int[] { 193, 124 }, new int[] { 194, 125 }, new int[] { 195, 126 }, new int[] { 196, 127 }, new int[] { 197, 128 }, new int[] { 198, 129 }, new int[] { 199, 130 },
new int[] { 200, 131 }, new int[] { 201, 0 }, new int[] { 202, 132 }, new int[] { 203, 133 }, new int[] { 204, 0 }, new int[] { 205, 134 }, new int[] { 206, 135 }, new int[] { 207, 136 }, new int[] { 208, 137 }, new int[] { 209, 0 },
new int[] { 210, 0 }, new int[] { 211, 0 }, new int[] { 212, 0 }, new int[] { 213, 0 }, new int[] { 214, 0 }, new int[] { 215, 0 }, new int[] { 216, 0 }, new int[] { 217, 0 }, new int[] { 218, 0 }, new int[] { 219, 0 },
new int[] { 220, 0 }, new int[] { 221, 0 }, new int[] { 222, 0 }, new int[] { 223, 0 }, new int[] { 224, 0 }, new int[] { 225, 138 }, new int[] { 226, 0 }, new int[] { 227, 139 }, new int[] { 228, 0 }, new int[] { 229, 0 },
new int[] { 230, 0 }, new int[] { 231, 0 }, new int[] { 232, 140 }, new int[] { 233, 141 }, new int[] { 234, 142 }, new int[] { 235, 143 }, new int[] { 236, 0 }, new int[] { 237, 0 }, new int[] { 238, 0 }, new int[] { 239, 0 },
new int[] { 240, 0 }, new int[] { 241, 144 }, new int[] { 242, 0 }, new int[] { 243, 0 }, new int[] { 244, 0 }, new int[] { 245, 145 }, new int[] { 246, 0 }, new int[] { 247, 0 }, new int[] { 248, 146 }, new int[] { 249, 147 },
new int[] { 250, 148 }, new int[] { 251, 149 }, new int[] { 252, 0 }, new int[] { 253, 0 }, new int[] { 254, 0 }, new int[] { 255, 0 } };
public static CFFStandardEncoding getInstance() {
return INSTANCE;
}
private static final CFFStandardEncoding INSTANCE = new CFFStandardEncoding();
static {
for (int[] encodingEntry : CFF_STANDARD_ENCODING_TABLE)
INSTANCE.add(encodingEntry[0], encodingEntry[1]);
}
}

View file

@ -0,0 +1,49 @@
package org.apache.fontbox.cff;
public final class CFFStandardString {
public static String getName(int sid) {
return SID2STR[sid];
}
private static final String[] SID2STR = new String[] {
".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft",
"parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two",
"three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less",
"equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d",
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction",
"yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi",
"fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
"guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve",
"dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine",
"Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls",
"onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide",
"brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior",
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
"Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
"Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
"aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
"egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
"Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle",
"oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior",
"threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
"msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
"parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
"Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
"Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
"colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall",
"Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall",
"oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior",
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior",
"seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall",
"Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall",
"Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall",
"OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000",
"001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman",
"Semibold" };
}

View file

@ -0,0 +1,123 @@
package org.apache.fontbox.cff;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.fontbox.EncodedFont;
import org.apache.fontbox.encoding.Encoding;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CFFType1Font extends CFFFont implements EncodedFont {
private final Map<String, Object> privateDict = new LinkedHashMap<String, Object>();
private CFFEncoding encoding;
private final Map<Integer, Type2CharString> charStringCache = new ConcurrentHashMap<Integer, Type2CharString>();
private final PrivateType1CharStringReader reader = new PrivateType1CharStringReader();
private class PrivateType1CharStringReader implements Type1CharStringReader {
private PrivateType1CharStringReader() {}
public Type1CharString getType1CharString(String name) throws IOException {
return CFFType1Font.this.getType1CharString(name);
}
}
public GeneralPath getPath(String name) throws IOException {
return getType1CharString(name).getPath();
}
public float getWidth(String name) throws IOException {
return (float)getType1CharString(name).getWidth();
}
public boolean hasGlyph(String name) {
int sid = this.charset.getSID(name);
int gid = this.charset.getGIDForSID(sid);
return (gid != 0);
}
public List<Number> getFontMatrix() {
return (List<Number>)this.topDict.get("FontMatrix");
}
public Type1CharString getType1CharString(String name) throws IOException {
int gid = nameToGID(name);
return getType2CharString(gid, name);
}
public int nameToGID(String name) {
int sid = this.charset.getSID(name);
return this.charset.getGIDForSID(sid);
}
public Type2CharString getType2CharString(int gid) throws IOException {
String name = "GID+" + gid;
return getType2CharString(gid, name);
}
private Type2CharString getType2CharString(int gid, String name) throws IOException {
Type2CharString type2 = this.charStringCache.get(Integer.valueOf(gid));
if (type2 == null) {
byte[] bytes = null;
if (gid < this.charStrings.length)
bytes = this.charStrings[gid];
if (bytes == null)
bytes = this.charStrings[0];
Type2CharStringParser parser = new Type2CharStringParser(this.fontName, name);
List<Object> type2seq = parser.parse(bytes, this.globalSubrIndex, getLocalSubrIndex());
type2 = new Type2CharString(this.reader, this.fontName, name, gid, type2seq, getDefaultWidthX(), getNominalWidthX());
this.charStringCache.put(Integer.valueOf(gid), type2);
}
return type2;
}
public Map<String, Object> getPrivateDict() {
return this.privateDict;
}
void addToPrivateDict(String name, Object value) {
if (value != null)
this.privateDict.put(name, value);
}
public CFFEncoding getEncoding() {
return this.encoding;
}
void setEncoding(CFFEncoding encoding) {
this.encoding = encoding;
}
private byte[][] getLocalSubrIndex() {
return (byte[][])this.privateDict.get("Subrs");
}
private Object getProperty(String name) {
Object topDictValue = this.topDict.get(name);
if (topDictValue != null)
return topDictValue;
Object privateDictValue = this.privateDict.get(name);
if (privateDictValue != null)
return privateDictValue;
return null;
}
private int getDefaultWidthX() {
Number num = (Number)getProperty("defaultWidthX");
if (num == null)
return 1000;
return num.intValue();
}
private int getNominalWidthX() {
Number num = (Number)getProperty("nominalWidthX");
if (num == null)
return 0;
return num.intValue();
}
}

View file

@ -0,0 +1,17 @@
package org.apache.fontbox.cff;
import java.util.List;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CIDKeyedType2CharString extends Type2CharString {
private final int cid;
public CIDKeyedType2CharString(Type1CharStringReader font, String fontName, int cid, int gid, List<Object> sequence, int defaultWidthX, int nomWidthX) {
super(font, fontName, String.format("%04x", cid), gid, sequence, defaultWidthX, nomWidthX);
this.cid = cid;
}
public int getCID() {
return this.cid;
}
}

View file

@ -0,0 +1,184 @@
package org.apache.fontbox.cff;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
public class CharStringCommand {
private Key commandKey = null;
public static final Map<Key, String> TYPE1_VOCABULARY;
public static final Map<Key, String> TYPE2_VOCABULARY;
public CharStringCommand(int b0) {
setKey(new Key(b0));
}
public CharStringCommand(int b0, int b1) {
setKey(new Key(b0, b1));
}
public CharStringCommand(int[] values) {
setKey(new Key(values));
}
public Key getKey() {
return this.commandKey;
}
private void setKey(Key key) {
this.commandKey = key;
}
public String toString() {
String str = TYPE2_VOCABULARY.get(getKey());
if (str == null)
str = TYPE1_VOCABULARY.get(getKey());
if (str == null)
return getKey().toString() + '|';
return str + '|';
}
public int hashCode() {
return getKey().hashCode();
}
public boolean equals(Object object) {
if (object instanceof CharStringCommand) {
CharStringCommand that = (CharStringCommand)object;
return getKey().equals(that.getKey());
}
return false;
}
public static class Key {
private int[] keyValues = null;
public Key(int b0) {
setValue(new int[] { b0 });
}
public Key(int b0, int b1) {
setValue(new int[] { b0, b1 });
}
public Key(int[] values) {
setValue(values);
}
public int[] getValue() {
return this.keyValues;
}
private void setValue(int[] value) {
this.keyValues = value;
}
public String toString() {
return Arrays.toString(getValue());
}
public int hashCode() {
if (this.keyValues[0] == 12 && this.keyValues.length > 1)
return this.keyValues[0] ^ this.keyValues[1];
return this.keyValues[0];
}
public boolean equals(Object object) {
if (object instanceof Key) {
Key that = (Key)object;
if (this.keyValues[0] == 12 && that.keyValues[0] == 12) {
if (this.keyValues.length > 1 && that.keyValues.length > 1)
return (this.keyValues[1] == that.keyValues[1]);
return (this.keyValues.length == that.keyValues.length);
}
return (this.keyValues[0] == that.keyValues[0]);
}
return false;
}
}
static {
Map<Key, String> map = new LinkedHashMap<Key, String>(26);
map.put(new Key(1), "hstem");
map.put(new Key(3), "vstem");
map.put(new Key(4), "vmoveto");
map.put(new Key(5), "rlineto");
map.put(new Key(6), "hlineto");
map.put(new Key(7), "vlineto");
map.put(new Key(8), "rrcurveto");
map.put(new Key(9), "closepath");
map.put(new Key(10), "callsubr");
map.put(new Key(11), "return");
map.put(new Key(12), "escape");
map.put(new Key(12, 0), "dotsection");
map.put(new Key(12, 1), "vstem3");
map.put(new Key(12, 2), "hstem3");
map.put(new Key(12, 6), "seac");
map.put(new Key(12, 7), "sbw");
map.put(new Key(12, 12), "div");
map.put(new Key(12, 16), "callothersubr");
map.put(new Key(12, 17), "pop");
map.put(new Key(12, 33), "setcurrentpoint");
map.put(new Key(13), "hsbw");
map.put(new Key(14), "endchar");
map.put(new Key(21), "rmoveto");
map.put(new Key(22), "hmoveto");
map.put(new Key(30), "vhcurveto");
map.put(new Key(31), "hvcurveto");
TYPE1_VOCABULARY = Collections.<Key, String>unmodifiableMap(map);
map = new LinkedHashMap<Key, String>(48);
map.put(new Key(1), "hstem");
map.put(new Key(3), "vstem");
map.put(new Key(4), "vmoveto");
map.put(new Key(5), "rlineto");
map.put(new Key(6), "hlineto");
map.put(new Key(7), "vlineto");
map.put(new Key(8), "rrcurveto");
map.put(new Key(10), "callsubr");
map.put(new Key(11), "return");
map.put(new Key(12), "escape");
map.put(new Key(12, 3), "and");
map.put(new Key(12, 4), "or");
map.put(new Key(12, 5), "not");
map.put(new Key(12, 9), "abs");
map.put(new Key(12, 10), "add");
map.put(new Key(12, 11), "sub");
map.put(new Key(12, 12), "div");
map.put(new Key(12, 14), "neg");
map.put(new Key(12, 15), "eq");
map.put(new Key(12, 18), "drop");
map.put(new Key(12, 20), "put");
map.put(new Key(12, 21), "get");
map.put(new Key(12, 22), "ifelse");
map.put(new Key(12, 23), "random");
map.put(new Key(12, 24), "mul");
map.put(new Key(12, 26), "sqrt");
map.put(new Key(12, 27), "dup");
map.put(new Key(12, 28), "exch");
map.put(new Key(12, 29), "index");
map.put(new Key(12, 30), "roll");
map.put(new Key(12, 34), "hflex");
map.put(new Key(12, 35), "flex");
map.put(new Key(12, 36), "hflex1");
map.put(new Key(12, 37), "flex1");
map.put(new Key(14), "endchar");
map.put(new Key(18), "hstemhm");
map.put(new Key(19), "hintmask");
map.put(new Key(20), "cntrmask");
map.put(new Key(21), "rmoveto");
map.put(new Key(22), "hmoveto");
map.put(new Key(23), "vstemhm");
map.put(new Key(24), "rcurveline");
map.put(new Key(25), "rlinecurve");
map.put(new Key(26), "vvcurveto");
map.put(new Key(27), "hhcurveto");
map.put(new Key(28), "shortint");
map.put(new Key(29), "callgsubr");
map.put(new Key(30), "vhcurveto");
map.put(new Key(31), "hvcurveto");
TYPE2_VOCABULARY = Collections.<Key, String>unmodifiableMap(map);
}
}

View file

@ -0,0 +1,23 @@
package org.apache.fontbox.cff;
import java.util.List;
import java.util.Stack;
public abstract class CharStringHandler {
public List<Integer> handleSequence(List<Object> sequence) {
Stack<Integer> stack = new Stack<Integer>();
for (Object obj : sequence) {
if (obj instanceof CharStringCommand) {
List<Integer> results = handleCommand(stack, (CharStringCommand)obj);
stack.clear();
if (results != null)
stack.addAll(results);
continue;
}
stack.push((Integer)obj);
}
return stack;
}
public abstract List<Integer> handleCommand(List<Integer> paramList, CharStringCommand paramCharStringCommand);
}

View file

@ -0,0 +1,109 @@
package org.apache.fontbox.cff;
import java.io.EOFException;
import java.io.IOException;
import org.apache.fontbox.util.Charsets;
public class DataInput {
private byte[] inputBuffer = null;
private int bufferPosition = 0;
public DataInput(byte[] buffer) {
this.inputBuffer = buffer;
}
public boolean hasRemaining() {
return (this.bufferPosition < this.inputBuffer.length);
}
public int getPosition() {
return this.bufferPosition;
}
public void setPosition(int position) {
this.bufferPosition = position;
}
public String getString() throws IOException {
return new String(this.inputBuffer, Charsets.ISO_8859_1);
}
public byte readByte() throws IOException {
try {
byte value = this.inputBuffer[this.bufferPosition];
this.bufferPosition++;
return value;
} catch (RuntimeException re) {
return -1;
}
}
public int readUnsignedByte() throws IOException {
int b = read();
if (b < 0)
throw new EOFException();
return b;
}
public int peekUnsignedByte(int offset) throws IOException {
int b = peek(offset);
if (b < 0)
throw new EOFException();
return b;
}
public short readShort() throws IOException {
return (short)readUnsignedShort();
}
public int readUnsignedShort() throws IOException {
int b1 = read();
int b2 = read();
if ((b1 | b2) < 0)
throw new EOFException();
return b1 << 8 | b2;
}
public int readInt() throws IOException {
int b1 = read();
int b2 = read();
int b3 = read();
int b4 = read();
if ((b1 | b2 | b3 | b4) < 0)
throw new EOFException();
return b1 << 24 | b2 << 16 | b3 << 8 | b4;
}
public byte[] readBytes(int length) throws IOException {
if (this.inputBuffer.length - this.bufferPosition < length)
throw new EOFException();
byte[] bytes = new byte[length];
System.arraycopy(this.inputBuffer, this.bufferPosition, bytes, 0, length);
this.bufferPosition += length;
return bytes;
}
private int read() {
try {
int value = this.inputBuffer[this.bufferPosition] & 0xFF;
this.bufferPosition++;
return value;
} catch (RuntimeException re) {
return -1;
}
}
private int peek(int offset) {
try {
int value = this.inputBuffer[this.bufferPosition + offset] & 0xFF;
return value;
} catch (RuntimeException re) {
return -1;
}
}
public int length() {
return this.inputBuffer.length;
}
}

View file

@ -0,0 +1,47 @@
package org.apache.fontbox.cff;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class DataOutput {
private ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();
private String outputEncoding = null;
public DataOutput() {
this("ISO-8859-1");
}
public DataOutput(String encoding) {
this.outputEncoding = encoding;
}
public byte[] getBytes() {
return this.outputBuffer.toByteArray();
}
public void write(int value) {
this.outputBuffer.write(value);
}
public void write(byte[] buffer) {
this.outputBuffer.write(buffer, 0, buffer.length);
}
public void write(byte[] buffer, int offset, int length) {
this.outputBuffer.write(buffer, offset, length);
}
public void print(String string) throws IOException {
write(string.getBytes(this.outputEncoding));
}
public void println(String string) throws IOException {
write(string.getBytes(this.outputEncoding));
write(10);
}
public void println() {
write(10);
}
}

View file

@ -0,0 +1,11 @@
package org.apache.fontbox.cff;
public abstract class FDSelect {
protected final CFFCIDFont owner;
public FDSelect(CFFCIDFont owner) {
this.owner = owner;
}
public abstract int getFDIndex(int paramInt);
}

View file

@ -0,0 +1,272 @@
package org.apache.fontbox.cff;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.fontbox.encoding.StandardEncoding;
import org.apache.fontbox.type1.Type1CharStringReader;
public class Type1CharString {
private static final Log LOG = LogFactory.getLog(Type1CharString.class);
private Type1CharStringReader font;
private String fontName;
private String glyphName;
private GeneralPath path = null;
private int width = 0;
private Point2D.Float leftSideBearing = null;
private Point2D.Float current = null;
private boolean isFlex = false;
private List<Point2D.Float> flexPoints = new ArrayList<Point2D.Float>();
protected List<Object> type1Sequence;
protected int commandCount;
public Type1CharString(Type1CharStringReader font, String fontName, String glyphName, List<Object> sequence) {
this(font, fontName, glyphName);
this.type1Sequence = sequence;
}
protected Type1CharString(Type1CharStringReader font, String fontName, String glyphName) {
this.font = font;
this.fontName = fontName;
this.glyphName = glyphName;
this.current = new Point2D.Float(0.0F, 0.0F);
}
public String getName() {
return this.glyphName;
}
public Rectangle2D getBounds() {
if (this.path == null)
render();
return this.path.getBounds2D();
}
public int getWidth() {
if (this.path == null)
render();
return this.width;
}
public GeneralPath getPath() {
if (this.path == null)
render();
return this.path;
}
public List<Object> getType1Sequence() {
return this.type1Sequence;
}
private void render() {
this.path = new GeneralPath();
this.leftSideBearing = new Point2D.Float(0.0F, 0.0F);
this.width = 0;
CharStringHandler handler = new CharStringHandler() {
public List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
return Type1CharString.this.handleCommand(numbers, command);
}
};
handler.handleSequence(this.type1Sequence);
}
private List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
this.commandCount++;
String name = CharStringCommand.TYPE1_VOCABULARY.get(command.getKey());
if ("rmoveto".equals(name)) {
if (numbers.size() >= 2)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float((float)numbers.get(0), (float)numbers.get(1)));
} else {
rmoveTo(numbers.get(0), numbers.get(1));
}
} else if ("vmoveto".equals(name)) {
if (numbers.size() >= 1)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float(0.0F, (float)numbers.get(0)));
} else {
rmoveTo(Integer.valueOf(0), numbers.get(0));
}
} else if ("hmoveto".equals(name)) {
if (numbers.size() >= 1)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float((float)numbers.get(0), 0.0F));
} else {
rmoveTo(numbers.get(0), Integer.valueOf(0));
}
} else if ("rlineto".equals(name)) {
if (numbers.size() >= 2)
rlineTo(numbers.get(0), numbers.get(1));
} else if ("hlineto".equals(name)) {
if (numbers.size() >= 1)
rlineTo(numbers.get(0), Integer.valueOf(0));
} else if ("vlineto".equals(name)) {
if (numbers.size() >= 1)
rlineTo(Integer.valueOf(0), numbers.get(0));
} else if ("rrcurveto".equals(name)) {
if (numbers.size() >= 6)
rrcurveTo(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), numbers.get(5));
} else if ("closepath".equals(name)) {
closepath();
} else if ("sbw".equals(name)) {
if (numbers.size() >= 3) {
this.leftSideBearing = new Point2D.Float((float)numbers.get(0), (float)numbers.get(1));
this.width = numbers.get(2);
this.current.setLocation(this.leftSideBearing);
}
} else if ("hsbw".equals(name)) {
if (numbers.size() >= 2) {
this.leftSideBearing = new Point2D.Float((float)numbers.get(0), 0.0F);
this.width = numbers.get(1);
this.current.setLocation(this.leftSideBearing);
}
} else if ("vhcurveto".equals(name)) {
if (numbers.size() >= 4)
rrcurveTo(Integer.valueOf(0), numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), Integer.valueOf(0));
} else if ("hvcurveto".equals(name)) {
if (numbers.size() >= 4)
rrcurveTo(numbers.get(0), Integer.valueOf(0), numbers.get(1), numbers.get(2), Integer.valueOf(0), numbers.get(3));
} else if ("seac".equals(name)) {
if (numbers.size() >= 5)
seac(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4));
} else if ("setcurrentpoint".equals(name)) {
if (numbers.size() >= 2)
setcurrentpoint(numbers.get(0).intValue(), numbers.get(1).intValue());
} else if ("callothersubr".equals(name)) {
if (numbers.size() >= 1)
callothersubr(numbers.get(0).intValue());
} else {
if ("div".equals(name)) {
int b = numbers.get(numbers.size() - 1);
int a = numbers.get(numbers.size() - 2);
int result = a / b;
List<Integer> list = new ArrayList<Integer>(numbers);
list.remove(list.size() - 1);
list.remove(list.size() - 1);
list.add(Integer.valueOf(result));
return list;
}
if (!"hstem".equals(name) && !"vstem".equals(name) && !"hstem3".equals(name) && !"vstem3".equals(name) && !"dotsection".equals(name))
if (!"endchar".equals(name))
if ("return".equals(name)) {
LOG.warn("Unexpected charstring command: " + command.getKey() + " in glyph " + this.glyphName + " of font " + this.fontName);
} else {
if (name != null)
throw new IllegalArgumentException("Unhandled command: " + name);
LOG.warn("Unknown charstring command: " + command.getKey() + " in glyph " + this.glyphName + " of font " + this.fontName);
}
}
return null;
}
private void setcurrentpoint(int x, int y) {
this.current.setLocation((float)x, (float)y);
}
private void callothersubr(int num) {
if (num == 0) {
this.isFlex = false;
if (this.flexPoints.size() < 7) {
LOG.warn("flex without moveTo in font " + this.fontName + ", glyph " + this.glyphName + ", command " + this.commandCount);
return;
}
Point2D.Float reference = this.flexPoints.get(0);
reference.setLocation(this.current.getX() + reference.getX(), this.current.getY() + reference.getY());
Point2D.Float first = this.flexPoints.get(1);
first.setLocation(reference.getX() + first.getX(), reference.getY() + first.getY());
first.setLocation(first.getX() - this.current.getX(), first.getY() - this.current.getY());
rrcurveTo(Double.valueOf(this.flexPoints.get(1).getX()), Double.valueOf(this.flexPoints.get(1).getY()), Double.valueOf(this.flexPoints.get(2).getX()), Double.valueOf(this.flexPoints.get(2).getY()), Double.valueOf(this.flexPoints.get(3).getX()), Double.valueOf(this.flexPoints.get(3).getY()));
rrcurveTo(Double.valueOf(this.flexPoints.get(4).getX()), Double.valueOf(this.flexPoints.get(4).getY()), Double.valueOf(this.flexPoints.get(5).getX()), Double.valueOf(this.flexPoints.get(5).getY()), Double.valueOf(this.flexPoints.get(6).getX()), Double.valueOf(this.flexPoints.get(6).getY()));
this.flexPoints.clear();
} else if (num == 1) {
this.isFlex = true;
} else {
throw new IllegalArgumentException("Unexpected other subroutine: " + num);
}
}
private void rmoveTo(Number dx, Number dy) {
float x = (float)this.current.getX() + dx.floatValue();
float y = (float)this.current.getY() + dy.floatValue();
this.path.moveTo(x, y);
this.current.setLocation(x, y);
}
private void rlineTo(Number dx, Number dy) {
float x = (float)this.current.getX() + dx.floatValue();
float y = (float)this.current.getY() + dy.floatValue();
if (this.path.getCurrentPoint() == null) {
LOG.warn("rlineTo without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
this.path.moveTo(x, y);
} else {
this.path.lineTo(x, y);
}
this.current.setLocation(x, y);
}
private void rrcurveTo(Number dx1, Number dy1, Number dx2, Number dy2, Number dx3, Number dy3) {
float x1 = (float)this.current.getX() + dx1.floatValue();
float y1 = (float)this.current.getY() + dy1.floatValue();
float x2 = x1 + dx2.floatValue();
float y2 = y1 + dy2.floatValue();
float x3 = x2 + dx3.floatValue();
float y3 = y2 + dy3.floatValue();
if (this.path.getCurrentPoint() == null) {
LOG.warn("rrcurveTo without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
this.path.moveTo(x3, y3);
} else {
this.path.curveTo(x1, y1, x2, y2, x3, y3);
}
this.current.setLocation(x3, y3);
}
private void closepath() {
if (this.path.getCurrentPoint() == null) {
LOG.warn("closepath without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
} else {
this.path.closePath();
}
this.path.moveTo(this.current.getX(), this.current.getY());
}
private void seac(Number asb, Number adx, Number ady, Number bchar, Number achar) {
String baseName = StandardEncoding.INSTANCE.getName(bchar.intValue());
if (baseName != null)
try {
Type1CharString base = this.font.getType1CharString(baseName);
this.path.append(base.getPath().getPathIterator(null), false);
} catch (IOException e) {
LOG.warn("invalid seac character in glyph " + this.glyphName + " of font " + this.fontName);
}
String accentName = StandardEncoding.INSTANCE.getName(achar.intValue());
if (accentName != null)
try {
Type1CharString accent = this.font.getType1CharString(accentName);
AffineTransform at = AffineTransform.getTranslateInstance(this.leftSideBearing.getX() + (double)adx.floatValue(), this.leftSideBearing.getY() + (double)ady.floatValue());
this.path.append(accent.getPath().getPathIterator(at), false);
} catch (IOException e) {
LOG.warn("invalid seac character in glyph " + this.glyphName + " of font " + this.fontName);
}
}
public String toString() {
return this.type1Sequence.toString().replace("|", "\n").replace(",", " ");
}
}

View file

@ -0,0 +1,134 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Type1CharStringParser {
private static final Log LOG = LogFactory.getLog(Type1CharStringParser.class);
static final int RETURN = 11;
static final int CALLSUBR = 10;
static final int TWO_BYTE = 12;
static final int CALLOTHERSUBR = 16;
static final int POP = 17;
private final String fontName;
private final String glyphName;
public Type1CharStringParser(String fontName, String glyphName) {
this.fontName = fontName;
this.glyphName = glyphName;
}
public List<Object> parse(byte[] bytes, List<byte[]> subrs) throws IOException {
return parse(bytes, subrs, new ArrayList());
}
private List<Object> parse(byte[] bytes, List<byte[]> subrs, List<Object> sequence) throws IOException {
DataInput input = new DataInput(bytes);
while (input.hasRemaining()) {
int b0 = input.readUnsignedByte();
if (b0 == 10) {
Object obj = sequence.remove(sequence.size() - 1);
if (!(obj instanceof Integer)) {
LOG.warn("Parameter " + obj + " for CALLSUBR is ignored, integer expected in glyph '" + this.glyphName + "' of font " + this.fontName);
continue;
}
Integer operand = (Integer)obj;
if (operand >= 0 && operand < subrs.size()) {
byte[] subrBytes = subrs.get(operand.intValue());
parse(subrBytes, subrs, sequence);
Object lastItem = sequence.get(sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
sequence.remove(sequence.size() - 1);
}
continue;
}
if (b0 == 12 && input.peekUnsignedByte(0) == 16) {
input.readByte();
Integer othersubrNum = (Integer)sequence.remove(sequence.size() - 1);
Integer numArgs = (Integer)sequence.remove(sequence.size() - 1);
Stack<Integer> results = new Stack<Integer>();
if (othersubrNum == 0) {
results.push(removeInteger(sequence));
results.push(removeInteger(sequence));
sequence.remove(sequence.size() - 1);
sequence.add(Integer.valueOf(0));
sequence.add(new CharStringCommand(12, 16));
} else if (othersubrNum == 1) {
sequence.add(Integer.valueOf(1));
sequence.add(new CharStringCommand(12, 16));
} else if (othersubrNum == 3) {
results.push(removeInteger(sequence));
} else {
for (int i = 0; i < numArgs; i++)
results.push(removeInteger(sequence));
}
while (input.peekUnsignedByte(0) == 12 && input.peekUnsignedByte(1) == 17) {
input.readByte();
input.readByte();
sequence.add(results.pop());
}
if (results.size() > 0)
LOG.warn("Value left on the PostScript stack in glyph " + this.glyphName + " of font " + this.fontName);
continue;
}
if (b0 >= 0 && b0 <= 31) {
sequence.add(readCommand(input, b0));
continue;
}
if (b0 >= 32 && b0 <= 255) {
sequence.add(readNumber(input, b0));
continue;
}
throw new IllegalArgumentException();
}
return sequence;
}
private static Integer removeInteger(List<Object> sequence) throws IOException {
Object item = sequence.remove(sequence.size() - 1);
if (item instanceof Integer)
return (Integer)item;
CharStringCommand command = (CharStringCommand)item;
if (command.getKey().getValue()[0] == 12 && command.getKey().getValue()[1] == 12) {
int a = (Integer)sequence.remove(sequence.size() - 1);
int b = (Integer)sequence.remove(sequence.size() - 1);
return b / a;
}
throw new IOException("Unexpected char string command: " + command.getKey());
}
private CharStringCommand readCommand(DataInput input, int b0) throws IOException {
if (b0 == 12) {
int b1 = input.readUnsignedByte();
return new CharStringCommand(b0, b1);
}
return new CharStringCommand(b0);
}
private Integer readNumber(DataInput input, int b0) throws IOException {
if (b0 >= 32 && b0 <= 246)
return b0 - 139;
if (b0 >= 247 && b0 <= 250) {
int b1 = input.readUnsignedByte();
return (b0 - 247) * 256 + b1 + 108;
}
if (b0 >= 251 && b0 <= 254) {
int b1 = input.readUnsignedByte();
return -(b0 - 251) * 256 - b1 - 108;
}
if (b0 == 255)
return input.readInt();
throw new IllegalArgumentException();
}
}

View file

@ -0,0 +1,71 @@
package org.apache.fontbox.cff;
public final class Type1FontUtil {
public static String hexEncode(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
String string = Integer.toHexString(bytes[i] & 0xFF);
if (string.length() == 1)
sb.append("0");
sb.append(string.toUpperCase());
}
return sb.toString();
}
public static byte[] hexDecode(String string) {
if (string.length() % 2 != 0)
throw new IllegalArgumentException();
byte[] bytes = new byte[string.length() / 2];
for (int i = 0; i < string.length(); i += 2)
bytes[i / 2] = (byte)Integer.parseInt(string.substring(i, i + 2), 16);
return bytes;
}
public static byte[] eexecEncrypt(byte[] buffer) {
return encrypt(buffer, 55665, 4);
}
public static byte[] charstringEncrypt(byte[] buffer, int n) {
return encrypt(buffer, 4330, n);
}
private static byte[] encrypt(byte[] plaintextBytes, int r, int n) {
byte[] buffer = new byte[plaintextBytes.length + n];
for (int i = 0; i < n; i++)
buffer[i] = 0;
System.arraycopy(plaintextBytes, 0, buffer, n, buffer.length - n);
int c1 = 52845;
int c2 = 22719;
byte[] ciphertextBytes = new byte[buffer.length];
for (int j = 0; j < buffer.length; j++) {
int plain = buffer[j] & 0xFF;
int cipher = plain ^ r >> 8;
ciphertextBytes[j] = (byte)cipher;
r = (cipher + r) * c1 + c2 & 0xFFFF;
}
return ciphertextBytes;
}
public static byte[] eexecDecrypt(byte[] buffer) {
return decrypt(buffer, 55665, 4);
}
public static byte[] charstringDecrypt(byte[] buffer, int n) {
return decrypt(buffer, 4330, n);
}
private static byte[] decrypt(byte[] ciphertextBytes, int r, int n) {
byte[] buffer = new byte[ciphertextBytes.length];
int c1 = 52845;
int c2 = 22719;
for (int i = 0; i < ciphertextBytes.length; i++) {
int cipher = ciphertextBytes[i] & 0xFF;
int plain = cipher ^ r >> 8;
buffer[i] = (byte)plain;
r = (cipher + r) * c1 + c2 & 0xFFFF;
}
byte[] plaintextBytes = new byte[ciphertextBytes.length - n];
System.arraycopy(buffer, n, plaintextBytes, 0, plaintextBytes.length);
return plaintextBytes;
}
}

View file

@ -0,0 +1,213 @@
package org.apache.fontbox.cff;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.fontbox.type1.Type1CharStringReader;
public class Type2CharString extends Type1CharString {
private int defWidthX = 0;
private int nominalWidthX = 0;
private int pathCount = 0;
private final List<Object> type2sequence;
private final int gid;
public Type2CharString(Type1CharStringReader font, String fontName, String glyphName, int gid, List<Object> sequence, int defaultWidthX, int nomWidthX) {
super(font, fontName, glyphName);
this.gid = gid;
this.type2sequence = sequence;
this.defWidthX = defaultWidthX;
this.nominalWidthX = nomWidthX;
convertType1ToType2(sequence);
}
public int getGID() {
return this.gid;
}
public List<Object> getType2Sequence() {
return this.type2sequence;
}
private void convertType1ToType2(List<Object> sequence) {
this.type1Sequence = new ArrayList();
this.pathCount = 0;
CharStringHandler handler = new CharStringHandler() {
public List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
return Type2CharString.this.handleCommand(numbers, command);
}
};
handler.handleSequence(sequence);
}
private List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
this.commandCount++;
String name = CharStringCommand.TYPE2_VOCABULARY.get(command.getKey());
if ("hstem".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, true);
} else if ("vstem".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, false);
} else if ("vmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 1));
markPath();
addCommand(numbers, command);
} else if ("rlineto".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers, 2), command);
} else if ("hlineto".equals(name)) {
drawAlternatingLine(numbers, true);
} else if ("vlineto".equals(name)) {
drawAlternatingLine(numbers, false);
} else if ("rrcurveto".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers, 6), command);
} else if ("endchar".equals(name)) {
numbers = clearStack(numbers, (numbers.size() == 5 || numbers.size() == 1));
closePath();
if (numbers.size() == 4) {
numbers.add(0, Integer.valueOf(0));
addCommand(numbers, new CharStringCommand(12, 6));
} else {
addCommand(numbers, command);
}
} else if ("rmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 2));
markPath();
addCommand(numbers, command);
} else if ("hmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 1));
markPath();
addCommand(numbers, command);
} else if ("vhcurveto".equals(name)) {
drawAlternatingCurve(numbers, false);
} else if ("hvcurveto".equals(name)) {
drawAlternatingCurve(numbers, true);
} else if ("hflex".equals(name)) {
List<Integer> first = Arrays.<Integer>asList(numbers.get(0), 0, numbers.get(1), numbers.get(2), numbers.get(3), 0);
List<Integer> second = Arrays.<Integer>asList(numbers.get(4), 0, numbers.get(5), -((Integer)numbers.get(2)), numbers.get(6), 0);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("flex".equals(name)) {
List<Integer> first = numbers.subList(0, 6);
List<Integer> second = numbers.subList(6, 12);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("hflex1".equals(name)) {
List<Integer> first = Arrays.<Integer>asList(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), 0);
List<Integer> second = Arrays.<Integer>asList(numbers.get(5), 0, numbers.get(6), numbers.get(7), numbers.get(8), 0);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("flex1".equals(name)) {
int dx = 0;
int dy = 0;
for (int i = 0; i < 5; i++) {
dx += numbers.get(i * 2);
dy += numbers.get(i * 2 + 1);
}
List<Integer> first = numbers.subList(0, 6);
List<Integer> second = Arrays.<Integer>asList(numbers.get(6), numbers.get(7), numbers.get(8), numbers.get(9), (Math.abs(dx) > Math.abs(dy)) ? numbers.get(10) : -dx, (Math.abs(dx) > Math.abs(dy)) ? -dy : numbers.get(10));
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("hstemhm".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, true);
} else if ("hintmask".equals(name) || "cntrmask".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
if (numbers.size() > 0)
expandStemHints(numbers, false);
} else if ("vstemhm".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, false);
} else if ("rcurveline".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers.subList(0, numbers.size() - 2), 6), new CharStringCommand(8));
addCommand(numbers.subList(numbers.size() - 2, numbers.size()), new CharStringCommand(5));
} else if ("rlinecurve".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers.subList(0, numbers.size() - 6), 2), new CharStringCommand(5));
addCommand(numbers.subList(numbers.size() - 6, numbers.size()), new CharStringCommand(8));
} else if ("vvcurveto".equals(name)) {
drawCurve(numbers, false);
} else if ("hhcurveto".equals(name)) {
drawCurve(numbers, true);
} else {
addCommand(numbers, command);
}
return null;
}
private List<Integer> clearStack(List<Integer> numbers, boolean flag) {
if (this.type1Sequence.isEmpty())
if (flag) {
addCommand(Arrays.<Integer>asList(0, numbers.get(0) + this.nominalWidthX), new CharStringCommand(13));
numbers = numbers.subList(1, numbers.size());
} else {
addCommand(Arrays.<Integer>asList(0, this.defWidthX), new CharStringCommand(13));
}
return numbers;
}
private void expandStemHints(List<Integer> numbers, boolean horizontal) {}
private void markPath() {
if (this.pathCount > 0)
closePath();
this.pathCount++;
}
private void closePath() {
CharStringCommand command = (this.pathCount > 0) ? (CharStringCommand)this.type1Sequence.get(this.type1Sequence.size() - 1) : null;
CharStringCommand closepathCommand = new CharStringCommand(9);
if (command != null && !closepathCommand.equals(command))
addCommand(Collections.<Integer>emptyList(), closepathCommand);
}
private void drawAlternatingLine(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
addCommand(numbers.subList(0, 1), new CharStringCommand(horizontal ? 6 : 7));
numbers = numbers.subList(1, numbers.size());
horizontal = !horizontal;
}
}
private void drawAlternatingCurve(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
boolean last = (numbers.size() == 5);
if (horizontal) {
addCommand(Arrays.<Integer>asList(numbers.get(0), 0, numbers.get(1), numbers.get(2), last ? numbers.get(4) : 0, numbers.get(3)), new CharStringCommand(8));
} else {
addCommand(Arrays.<Integer>asList(0, numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), last ? numbers.get(4) : 0), new CharStringCommand(8));
}
numbers = numbers.subList(last ? 5 : 4, numbers.size());
horizontal = !horizontal;
}
}
private void drawCurve(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
boolean first = (numbers.size() % 4 == 1);
if (horizontal) {
addCommand(Arrays.<Integer>asList(numbers.get(first ? 1 : 0), first ? numbers.get(0) : 0, numbers.get(first ? 2 : 1), numbers.get(first ? 3 : 2), numbers.get(first ? 4 : 3), 0), new CharStringCommand(8));
} else {
addCommand(Arrays.<Integer>asList(first ? numbers.get(0) : 0, numbers.get(first ? 1 : 0), numbers.get(first ? 2 : 1), numbers.get(first ? 3 : 2), 0, numbers.get(first ? 4 : 3)), new CharStringCommand(8));
}
numbers = numbers.subList(first ? 5 : 4, numbers.size());
}
}
private void addCommandList(List<List<Integer>> numbers, CharStringCommand command) {
for (List<Integer> ns : numbers)
addCommand(ns, command);
}
private void addCommand(List<Integer> numbers, CharStringCommand command) {
this.type1Sequence.addAll(numbers);
this.type1Sequence.add(command);
}
private static <E> List<List<E>> split(List<E> list, int size) {
List<List<E>> result = new ArrayList<List<E>>();
for (int i = 0; i < list.size() / size; i++)
result.add(list.subList(i * size, (i + 1) * size));
return result;
}
}

View file

@ -0,0 +1,168 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Type2CharStringParser {
private int hstemCount = 0;
private int vstemCount = 0;
private List<Object> sequence = null;
private final String fontName;
private final String glyphName;
public Type2CharStringParser(String fontName, String glyphName) {
this.fontName = fontName;
this.glyphName = glyphName;
}
public Type2CharStringParser(String fontName, int cid) {
this.fontName = fontName;
this.glyphName = String.format("%04x", cid);
}
public List<Object> parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex) throws IOException {
return parse(bytes, globalSubrIndex, localSubrIndex, true);
}
private List<Object> parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, boolean init) throws IOException {
if (init) {
this.hstemCount = 0;
this.vstemCount = 0;
this.sequence = new ArrayList();
}
DataInput input = new DataInput(bytes);
boolean localSubroutineIndexProvided = (localSubrIndex != null && localSubrIndex.length > 0);
boolean globalSubroutineIndexProvided = (globalSubrIndex != null && globalSubrIndex.length > 0);
while (input.hasRemaining()) {
int b0 = input.readUnsignedByte();
if (b0 == 10 && localSubroutineIndexProvided) {
Integer operand = (Integer)this.sequence.remove(this.sequence.size() - 1);
int bias = 0;
int nSubrs = localSubrIndex.length;
if (nSubrs < 1240) {
bias = 107;
} else if (nSubrs < 33900) {
bias = 1131;
} else {
bias = 32768;
}
int subrNumber = bias + operand;
if (subrNumber < localSubrIndex.length) {
byte[] subrBytes = localSubrIndex[subrNumber];
parse(subrBytes, globalSubrIndex, localSubrIndex, false);
Object lastItem = this.sequence.get(this.sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
this.sequence.remove(this.sequence.size() - 1);
}
continue;
}
if (b0 == 29 && globalSubroutineIndexProvided) {
Integer operand = (Integer)this.sequence.remove(this.sequence.size() - 1);
int bias = 0;
int nSubrs = globalSubrIndex.length;
if (nSubrs < 1240) {
bias = 107;
} else if (nSubrs < 33900) {
bias = 1131;
} else {
bias = 32768;
}
int subrNumber = bias + operand;
if (subrNumber < globalSubrIndex.length) {
byte[] subrBytes = globalSubrIndex[subrNumber];
parse(subrBytes, globalSubrIndex, localSubrIndex, false);
Object lastItem = this.sequence.get(this.sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
this.sequence.remove(this.sequence.size() - 1);
}
continue;
}
if (b0 >= 0 && b0 <= 27) {
this.sequence.add(readCommand(b0, input));
continue;
}
if (b0 == 28) {
this.sequence.add(readNumber(b0, input));
continue;
}
if (b0 >= 29 && b0 <= 31) {
this.sequence.add(readCommand(b0, input));
continue;
}
if (b0 >= 32 && b0 <= 255) {
this.sequence.add(readNumber(b0, input));
continue;
}
throw new IllegalArgumentException();
}
return this.sequence;
}
private CharStringCommand readCommand(int b0, DataInput input) throws IOException {
if (b0 == 1 || b0 == 18) {
this.hstemCount += peekNumbers().size() / 2;
} else if (b0 == 3 || b0 == 19 || b0 == 20 || b0 == 23) {
this.vstemCount += peekNumbers().size() / 2;
}
if (b0 == 12) {
int b1 = input.readUnsignedByte();
return new CharStringCommand(b0, b1);
}
if (b0 == 19 || b0 == 20) {
int[] value = new int[1 + getMaskLength()];
value[0] = b0;
for (int i = 1; i < value.length; i++)
value[i] = input.readUnsignedByte();
return new CharStringCommand(value);
}
return new CharStringCommand(b0);
}
private Integer readNumber(int b0, DataInput input) throws IOException {
if (b0 == 28)
return Integer.valueOf(input.readShort());
if (b0 >= 32 && b0 <= 246)
return b0 - 139;
if (b0 >= 247 && b0 <= 250) {
int b1 = input.readUnsignedByte();
return (b0 - 247) * 256 + b1 + 108;
}
if (b0 >= 251 && b0 <= 254) {
int b1 = input.readUnsignedByte();
return -(b0 - 251) * 256 - b1 - 108;
}
if (b0 == 255) {
short value = input.readShort();
input.readUnsignedByte();
input.readUnsignedByte();
return Integer.valueOf(value);
}
throw new IllegalArgumentException();
}
private int getMaskLength() {
int hintCount = this.hstemCount + this.vstemCount;
int length = hintCount / 8;
if (hintCount % 8 > 0)
length++;
return length;
}
private List<Number> peekNumbers() {
List<Number> numbers = new ArrayList<Number>();
for (int i = this.sequence.size() - 1; i > -1; i--) {
Object object = this.sequence.get(i);
if (object instanceof Number) {
numbers.add(0, (Number)object);
} else {
return numbers;
}
}
return numbers;
}
}

View file

@ -0,0 +1,314 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (83pv-RKSJ-H)
%%Title: (83pv-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /83pv-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 0 def
/XUID [1 10 25324] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 97
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8540> <857e> 232
<8580> <8580> 390
<8581> <859e> 296
<859f> <85dd> 327
<85de> <85fc> 391
<8640> <867e> 422
<8680> <8691> 485
<8692> <8692> 295
<8693> <869e> 503
<86a2> <86ed> 7479
<8740> <875d> 7555
<875f> <8775> 7585
<8780> <878f> 7608
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
endcidrange
100 begincidrange
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<eb40> <eb40> 633
<eb41> <eb42> 7887
<eb43> <eb4f> 636
<eb50> <eb51> 7889
<eb52> <eb5a> 651
<eb5b> <eb5d> 7891
<eb5e> <eb5f> 663
<eb60> <eb64> 7894
<eb65> <eb68> 670
<eb69> <eb7a> 7899
<eb7b> <eb7e> 692
<eb80> <eb80> 696
<eb81> <eb81> 7917
<eb82> <ebac> 698
<ebb8> <ebbf> 741
<ebc8> <ebce> 749
<ebda> <ebe8> 756
<ebf0> <ebf7> 771
<ebfc> <ebfc> 779
<ec4f> <ec58> 780
<ec60> <ec79> 790
<ec81> <ec9a> 816
<ec9f> <ec9f> 7918
<eca0> <eca0> 843
<eca1> <eca1> 7919
<eca2> <eca2> 845
<eca3> <eca3> 7920
<eca4> <eca4> 847
<eca5> <eca5> 7921
<eca6> <eca6> 849
<eca7> <eca7> 7922
<eca8> <ecc0> 851
<ecc1> <ecc1> 7923
<ecc2> <ece0> 877
<ece1> <ece1> 7924
<ece2> <ece2> 909
<ece3> <ece3> 7925
<ece4> <ece4> 911
<ece5> <ece5> 7926
<ece6> <eceb> 913
<ecec> <ecec> 7927
<eced> <ecf1> 920
<ed40> <ed40> 7928
<ed41> <ed41> 926
<ed42> <ed42> 7929
<ed43> <ed43> 928
<ed44> <ed44> 7930
<ed45> <ed45> 930
<ed46> <ed46> 7931
<ed47> <ed47> 932
<ed48> <ed48> 7932
<ed49> <ed61> 934
<ed62> <ed62> 7933
<ed63> <ed7e> 960
<ed80> <ed82> 988
<ed83> <ed83> 7934
<ed84> <ed84> 992
<ed85> <ed85> 7935
endcidrange
22 begincidrange
<ed86> <ed86> 994
<ed87> <ed87> 7936
<ed88> <ed8d> 996
<ed8e> <ed8e> 7937
<ed8f> <ed94> 1003
<ed95> <ed96> 7938
<ed9f> <edb6> 1011
<edbf> <edd6> 1035
<ee40> <ee5d> 7555
<ee5f> <ee6e> 7940
<ee6f> <ee75> 7601
<ee80> <ee81> 7956
<ee82> <ee8f> 7610
<ee90> <ee90> 762
<ee91> <ee91> 761
<ee92> <ee92> 769
<ee93> <ee99> 7624
<ee9a> <ee9a> 768
<ee9b> <ee9c> 7631
<fd> <fd> 152
<fe> <fe> 228
<ff> <ff> 124
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,259 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90ms-RKSJ-H)
%%Title: (90ms-RKSJ-H Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90ms-RKSJ-H def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 950 def
/XUID [1 10 25343] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 231
endnotdefrange
100 begincidrange
<20> <7d> 231
<7e> <7e> 631
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8740> <875d> 7555
<875f> <8760> 7585
<8761> <8761> 8038
<8762> <8762> 7588
<8763> <8763> 8040
<8764> <8764> 7590
<8765> <8765> 8042
<8766> <8767> 7592
<8768> <8768> 8044
<8769> <876a> 7595
<876b> <876b> 8043
<876c> <876d> 7598
<876e> <876e> 8047
<876f> <8775> 7601
<877e> <877e> 8323
<8780> <8783> 7608
<8784> <8784> 8055
<8785> <878f> 7613
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
endcidrange
71 begincidrange
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<ed40> <ed7e> 8359
<ed80> <edb3> 8422
<edb4> <edb4> 1993
<edb5> <edfc> 8474
<ee40> <ee7e> 8546
<ee80> <eeec> 8609
<eeef> <eef8> 8092
<eef9> <eef9> 751
<eefa> <eefc> 8005
<fa40> <fa49> 8092
<fa4a> <fa53> 7575
<fa54> <fa54> 751
<fa55> <fa57> 8005
<fa58> <fa58> 7618
<fa59> <fa59> 7610
<fa5a> <fa5a> 8055
<fa5b> <fa5b> 768
<fa5c> <fa7e> 8359
<fa80> <facf> 8394
<fad0> <fad0> 1993
<fad1> <fafc> 8474
<fb40> <fb7e> 8518
<fb80> <fbfc> 8581
<fc40> <fc4b> 8706
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,156 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90ms-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90ms-RKSJ-H)
%%BeginResource: CMap (90ms-RKSJ-V)
%%Title: (90ms-RKSJ-V Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90ms-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90ms-RKSJ-V def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 1020 def
/XUID [1 10 25344] def
/WMode 1 def
78 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<81a8> <81a8> 739
<81a9> <81a9> 738
<81aa> <81ab> 736
<81ac> <81ac> 8270
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<849f> <849f> 7481
<84a0> <84a0> 7479
<84a1> <84a1> 7495
<84a2> <84a2> 7503
<84a3> <84a3> 7499
<84a4> <84a4> 7491
<84a5> <84a5> 7523
<84a6> <84a6> 7515
<84a7> <84a7> 7531
<84a8> <84a8> 7507
<84a9> <84a9> 7539
<84aa> <84aa> 7482
<84ab> <84ab> 7480
<84ac> <84ac> 7498
<84ad> <84ad> 7506
<84ae> <84ae> 7502
<84af> <84af> 7494
<84b0> <84b0> 7530
<84b1> <84b1> 7522
<84b2> <84b2> 7538
<84b3> <84b3> 7514
<84b4> <84b4> 7554
<84b5> <84b5> 7526
<84b6> <84b6> 7519
<84b7> <84b7> 7534
<84b8> <84b8> 7511
<84b9> <84b9> 7545
<84ba> <84ba> 7527
<84bb> <84bb> 7516
<84bc> <84bc> 7535
<84bd> <84bd> 7508
<84be> <84be> 7542
<875f> <8760> 7940
<8761> <8761> 8329
<8762> <8762> 7943
<8763> <8763> 8339
<8764> <8764> 7945
<8765> <8765> 8338
<8766> <8767> 7947
<8768> <8768> 8344
<8769> <876a> 7950
<876b> <876b> 8348
<876c> <876d> 7953
<876e> <876e> 8349
<8780> <8781> 7956
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,257 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90msp-RKSJ-H)
%%Title: (90msp-RKSJ-H Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90msp-RKSJ-H def
/CMapVersion 11.003 def
/CMapType 1 def
/XUID [1 10 25445] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8740> <875d> 7555
<875f> <8760> 7585
<8761> <8761> 8038
<8762> <8762> 7588
<8763> <8763> 8040
<8764> <8764> 7590
<8765> <8765> 8042
<8766> <8767> 7592
<8768> <8768> 8044
<8769> <876a> 7595
<876b> <876b> 8043
<876c> <876d> 7598
<876e> <876e> 8047
<876f> <8775> 7601
<877e> <877e> 8323
<8780> <8783> 7608
<8784> <8784> 8055
<8785> <878f> 7613
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
endcidrange
70 begincidrange
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<ed40> <ed7e> 8359
<ed80> <edb3> 8422
<edb4> <edb4> 1993
<edb5> <edfc> 8474
<ee40> <ee7e> 8546
<ee80> <eeec> 8609
<eeef> <eef8> 8092
<eef9> <eef9> 751
<eefa> <eefc> 8005
<fa40> <fa49> 8092
<fa4a> <fa53> 7575
<fa54> <fa54> 751
<fa55> <fa57> 8005
<fa58> <fa58> 7618
<fa59> <fa59> 7610
<fa5a> <fa5a> 8055
<fa5b> <fa5b> 768
<fa5c> <fa7e> 8359
<fa80> <facf> 8394
<fad0> <fad0> 1993
<fad1> <fafc> 8474
<fb40> <fb7e> 8518
<fb80> <fbfc> 8581
<fc40> <fc4b> 8706
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,155 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90msp-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90msp-RKSJ-H)
%%BeginResource: CMap (90msp-RKSJ-V)
%%Title: (90msp-RKSJ-V Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90msp-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90msp-RKSJ-V def
/CMapVersion 11.003 def
/CMapType 1 def
/XUID [1 10 25446] def
/WMode 1 def
78 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<81a8> <81a8> 739
<81a9> <81a9> 738
<81aa> <81ab> 736
<81ac> <81ac> 8270
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<849f> <849f> 7481
<84a0> <84a0> 7479
<84a1> <84a1> 7495
<84a2> <84a2> 7503
<84a3> <84a3> 7499
<84a4> <84a4> 7491
<84a5> <84a5> 7523
<84a6> <84a6> 7515
<84a7> <84a7> 7531
<84a8> <84a8> 7507
<84a9> <84a9> 7539
<84aa> <84aa> 7482
<84ab> <84ab> 7480
<84ac> <84ac> 7498
<84ad> <84ad> 7506
<84ae> <84ae> 7502
<84af> <84af> 7494
<84b0> <84b0> 7530
<84b1> <84b1> 7522
<84b2> <84b2> 7538
<84b3> <84b3> 7514
<84b4> <84b4> 7554
<84b5> <84b5> 7526
<84b6> <84b6> 7519
<84b7> <84b7> 7534
<84b8> <84b8> 7511
<84b9> <84b9> 7545
<84ba> <84ba> 7527
<84bb> <84bb> 7516
<84bc> <84bc> 7535
<84bd> <84bd> 7508
<84be> <84be> 7542
<875f> <8760> 7940
<8761> <8761> 8329
<8762> <8762> 7943
<8763> <8763> 8339
<8764> <8764> 7945
<8765> <8765> 8338
<8766> <8767> 7947
<8768> <8768> 8344
<8769> <876a> 7950
<876b> <876b> 8348
<876c> <876d> 7953
<876e> <876e> 8349
<8780> <8781> 7956
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,355 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90pv-RKSJ-H)
%%Title: (90pv-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /90pv-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 870 def
/XUID [1 10 25341] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 97
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8540> <8553> 7555
<855e> <8571> 8071
<857c> <857e> 8286
<8580> <8585> 8289
<8591> <859a> 8061
<859f> <85a8> 7575
<85a9> <85aa> 8225
<85ab> <85ad> 8295
<85b3> <85bc> 8092
<85bd> <85c1> 8298
<85db> <85f4> 8112
<8640> <8640> 7601
<8641> <8641> 8186
<8642> <8642> 7602
<8643> <8643> 8020
<8644> <8644> 8022
<8645> <8645> 8303
<8646> <8646> 7607
<8647> <8647> 8023
<8648> <8648> 7603
<8649> <8649> 8021
<864a> <864a> 7604
<864b> <864b> 8304
<864c> <864d> 7605
<864e> <864e> 8037
<864f> <8655> 8024
<8656> <8656> 8305
<8657> <8657> 8036
<8658> <8659> 8034
<865a> <865c> 8031
<865d> <865d> 8306
<869b> <869d> 7610
<869e> <869e> 8307
<869f> <869f> 8018
<86a0> <86a1> 8016
<86a2> <86a2> 8019
<86a3> <86a3> 8211
<86a4> <86a4> 8213
<86a5> <86a5> 8212
<86a6> <86a6> 8214
<86b3> <86b3> 8058
<86b4> <86b4> 8056
<86b5> <86b5> 8308
<86c7> <86ca> 8219
<86cb> <86ce> 8309
<86cf> <86cf> 8014
<86d0> <86d0> 8013
<86d1> <86d1> 8012
endcidrange
100 begincidrange
<86d2> <86d2> 8011
<86d3> <86d6> 8206
<8740> <8746> 8197
<8747> <8747> 8150
<8748> <8748> 8204
<8749> <8749> 8145
<874a> <874a> 8138
<874b> <874b> 7620
<874c> <874c> 8151
<874d> <874d> 7618
<874e> <874e> 8146
<874f> <874f> 8141
<8750> <8750> 7619
<8751> <8751> 8149
<8752> <8752> 8147
<8753> <8753> 8143
<8754> <8754> 8148
<8755> <8755> 8144
<8756> <8757> 8139
<8758> <8758> 8142
<8791> <8792> 8317
<8793> <8797> 7613
<8798> <8798> 8154
<8799> <8799> 8165
<879a> <879a> 8319
<879b> <879b> 8158
<879c> <879c> 8191
<879d> <879d> 8320
<879e> <879e> 8223
<879f> <879f> 7585
<87a0> <87a0> 8038
<87a1> <87a1> 7588
<87a2> <87a2> 7586
<87a3> <87a3> 8039
<87a4> <87a4> 8183
<87a5> <87a6> 8327
<87a7> <87a7> 8042
<87a8> <87a8> 7592
<87a9> <87aa> 8040
<87ab> <87ab> 7590
<87ac> <87ac> 7593
<87ad> <87ad> 7599
<87ae> <87ae> 8046
<87af> <87af> 8044
<87b0> <87b0> 7595
<87b1> <87b1> 8045
<87b2> <87b2> 8043
<87b3> <87b3> 7596
<87b4> <87b4> 8047
<87b5> <87b5> 7598
<87bd> <87bd> 8048
<87be> <87bf> 8051
<87c0> <87c1> 8049
<87e5> <87e7> 7621
<87e8> <87e8> 8323
<87fa> <87fa> 8054
<87fb> <87fc> 8321
<8840> <8840> 7624
<8841> <8842> 7629
<8854> <8855> 7608
<8868> <8868> 7958
<886a> <886d> 8313
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
endcidrange
63 begincidrange
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<eb41> <eb42> 7887
<eb50> <eb51> 7889
<eb5b> <eb5d> 7891
<eb60> <eb64> 7894
<eb69> <eb7a> 7899
<eb81> <eb81> 7917
<ec9f> <ec9f> 7918
<eca1> <eca1> 7919
<eca3> <eca3> 7920
<eca5> <eca5> 7921
<eca7> <eca7> 7922
<ecc1> <ecc1> 7923
<ece1> <ece1> 7924
<ece3> <ece3> 7925
<ece5> <ece5> 7926
<ecec> <ecec> 7927
<ed40> <ed40> 7928
<ed42> <ed42> 7929
<ed44> <ed44> 7930
<ed46> <ed46> 7931
<ed48> <ed48> 7932
<ed62> <ed62> 7933
<ed83> <ed83> 7934
<ed85> <ed85> 7935
<ed87> <ed87> 7936
<ed8e> <ed8e> 7937
<ed95> <ed96> 7938
<fd> <fd> 152
<fe> <fe> 228
<ff> <ff> 124
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,129 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90pv-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90pv-RKSJ-H)
%%BeginResource: CMap (90pv-RKSJ-V)
%%Title: (90pv-RKSJ-V Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90pv-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /90pv-RKSJ-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 940 def
/XUID [1 10 25342] def
/WMode 1 def
51 begincidrange
<8141> <8142> 7887
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<879f> <879f> 7940
<87a0> <87a0> 8329
<87a1> <87a1> 7943
<87a2> <87a2> 7941
<87a3> <87a3> 8330
<87a4> <87a5> 8333
<87a6> <87a7> 8337
<87a8> <87a8> 7947
<87a9> <87aa> 8339
<87ab> <87ab> 7945
<87ac> <87ac> 7948
<87ad> <87ad> 7954
<87ae> <87af> 8343
<87b0> <87b0> 7950
<87b1> <87b2> 8347
<87b3> <87b3> 7951
<87b4> <87b4> 8349
<87b5> <87b5> 7953
<87bd> <87bd> 8350
<87be> <87be> 8353
<87bf> <87bf> 8356
<87c0> <87c0> 8358
<87c1> <87c1> 8357
<87fa> <87fc> 8324
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,738 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Add-RKSJ-H)
%%Title: (Add-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Add-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 140 def
/XUID [1 10 25326] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 231
endnotdefrange
100 begincidrange
<20> <7e> 231
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<82f2> <82f4> 7958
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<889f> <889f> 1125
<88a0> <88a0> 7633
<88a1> <88af> 1127
<88b0> <88b0> 7961
<88b1> <88b8> 1143
<88b9> <88b9> 7634
<88ba> <88eb> 1152
<88ec> <88ec> 7635
<88ed> <88ee> 1203
<88ef> <88ef> 7962
<88f0> <88f0> 1206
<88f1> <88f1> 7636
<88f2> <88f9> 1208
<88fa> <88fa> 7637
<88fb> <88fc> 1217
<8940> <8948> 1219
<8949> <8949> 7638
<894a> <8951> 1229
<8952> <8952> 7963
<8953> <8953> 1238
<8954> <8954> 7639
<8955> <8957> 1240
<8958> <8958> 7964
<8959> <895b> 1244
<895c> <895c> 7642
<895d> <8960> 1248
<8961> <8961> 7643
<8962> <897e> 1253
<8980> <898a> 1282
<898b> <898b> 7644
<898c> <89a5> 1294
<89a6> <89a6> 7645
<89a7> <89a7> 1321
<89a8> <89a8> 7646
<89a9> <89dd> 1323
<89de> <89de> 7647
<89df> <89e4> 1377
<89e5> <89e5> 7965
<89e6> <89f7> 1384
<89f8> <89f8> 7648
<89f9> <89fc> 1403
<8a40> <8a40> 1407
<8a41> <8a41> 7650
<8a42> <8a7e> 1409
<8a80> <8a8a> 1470
<8a8b> <8a8b> 7652
<8a8c> <8a92> 1482
<8a93> <8a93> 7653
endcidrange
100 begincidrange
<8a94> <8a99> 1490
<8a9a> <8a9a> 7654
<8a9b> <8abf> 1497
<8ac0> <8ac0> 7655
<8ac1> <8aca> 1535
<8acb> <8acb> 7656
<8acc> <8ae2> 1546
<8ae3> <8ae3> 7657
<8ae4> <8afc> 1570
<8b40> <8b49> 1595
<8b4a> <8b4a> 7658
<8b4b> <8b5e> 1606
<8b5f> <8b5f> 7659
<8b60> <8b7e> 1627
<8b80> <8b81> 1658
<8b82> <8b82> 7966
<8b83> <8b87> 1661
<8b88> <8b88> 7967
<8b89> <8b9f> 1667
<8ba0> <8ba0> 7660
<8ba1> <8ba7> 1691
<8ba8> <8ba8> 7661
<8ba9> <8bbf> 1699
<8bc0> <8bc0> 7968
<8bc1> <8bcc> 1723
<8bcd> <8bcd> 7662
<8bce> <8bea> 1736
<8beb> <8beb> 7663
<8bec> <8bf1> 1766
<8bf2> <8bf2> 7664
<8bf3> <8bf8> 1773
<8bf9> <8bf9> 7665
<8bfa> <8bfa> 1780
<8bfb> <8bfb> 7666
<8bfc> <8bfc> 1782
<8c40> <8c55> 1783
<8c56> <8c56> 7668
<8c57> <8c70> 1806
<8c71> <8c71> 7671
<8c72> <8c7e> 1833
<8c80> <8c90> 1846
<8c91> <8c91> 7674
<8c92> <8c9c> 1864
<8c9d> <8c9d> 7969
<8c9e> <8c9e> 7676
<8c9f> <8cb1> 1877
<8cb2> <8cb2> 7677
<8cb3> <8cbe> 1897
<8cbf> <8cbf> 7678
<8cc0> <8cfc> 1910
<8d40> <8d49> 1971
<8d4a> <8d4a> 7679
<8d4b> <8d7e> 1982
<8d80> <8d8c> 2034
<8d8d> <8d8d> 7682
<8d8e> <8d93> 2048
<8d94> <8d94> 7683
<8d95> <8d98> 2055
<8d99> <8d99> 7684
<8d9a> <8dd0> 2060
<8dd1> <8dd1> 7685
<8dd2> <8de4> 2116
<8de5> <8de5> 7686
<8de6> <8df1> 2136
<8df2> <8df2> 7687
<8df3> <8dfc> 2149
<8e40> <8e45> 2159
<8e46> <8e46> 7688
<8e47> <8e48> 2166
<8e49> <8e49> 7689
<8e4a> <8e4a> 2169
<8e4b> <8e4b> 7690
<8e4c> <8e57> 2171
<8e58> <8e58> 7691
<8e59> <8e5f> 2184
<8e60> <8e60> 7970
<8e61> <8e7e> 2192
<8e80> <8ec5> 2222
<8ec6> <8ec6> 7693
<8ec7> <8eda> 2293
<8edb> <8edc> 7695
<8edd> <8efc> 2315
<8f40> <8f49> 2347
<8f4a> <8f4a> 7697
<8f4b> <8f54> 2358
<8f55> <8f55> 7698
<8f56> <8f7e> 2369
<8f80> <8f8b> 2410
<8f8c> <8f8c> 7699
<8f8d> <8f91> 2423
<8f92> <8f93> 7701
<8f94> <8fa2> 2430
<8fa3> <8fa3> 7703
<8fa4> <8fb0> 2446
<8fb1> <8fb1> 7704
<8fb2> <8fd2> 2460
<8fd3> <8fd3> 7706
<8fd4> <8fdc> 2494
<8fdd> <8fdd> 7707
<8fde> <8fe1> 2504
endcidrange
100 begincidrange
<8fe2> <8fe2> 7708
<8fe3> <8ffc> 2509
<9040> <9048> 2535
<9049> <9049> 7709
<904a> <9077> 2545
<9078> <9078> 7971
<9079> <907e> 2592
<9080> <9080> 7711
<9081> <909f> 2599
<90a0> <90a0> 7713
<90a1> <90e3> 2631
<90e4> <90e4> 7715
<90e5> <90ee> 2699
<90ef> <90ef> 7716
<90f0> <90f6> 2710
<90f7> <90f7> 7718
<90f8> <90f8> 7972
<90f9> <90f9> 2719
<90fa> <90fb> 7973
<90fc> <90fc> 2722
<9140> <9145> 2723
<9146> <9146> 7720
<9147> <9157> 2730
<9158> <9158> 7721
<9159> <916a> 2748
<916b> <916b> 7722
<916c> <916d> 2767
<916e> <916e> 7723
<916f> <917d> 2770
<917e> <917e> 7724
<9180> <9188> 2786
<9189> <9189> 7725
<918a> <91b4> 2796
<91b5> <91b5> 7975
<91b6> <91ba> 2840
<91bb> <91bb> 7726
<91bc> <91ca> 2846
<91cb> <91cb> 7727
<91cc> <91d9> 2862
<91da> <91da> 7728
<91db> <91e0> 2877
<91e1> <91e1> 7729
<91e2> <91ec> 2884
<91ed> <91ed> 7730
<91ee> <91fa> 2896
<91fb> <91fb> 7733
<91fc> <91fc> 2910
<9240> <9245> 2911
<9246> <9246> 7734
<9247> <9247> 2918
<9248> <9248> 7735
<9249> <924b> 2920
<924c> <924d> 7737
<924e> <925b> 2925
<925c> <925c> 7739
<925d> <927e> 2940
<9280> <928f> 2974
<9290> <9290> 7740
<9291> <9294> 2991
<9295> <9295> 7741
<9296> <929b> 2996
<929c> <929c> 7742
<929d> <92ba> 3003
<92bb> <92bb> 7743
<92bc> <92c5> 3034
<92c6> <92c6> 7744
<92c7> <92c7> 3045
<92c8> <92c8> 7745
<92c9> <92cc> 3047
<92cd> <92cd> 7747
<92ce> <92fc> 3052
<9340> <9340> 3099
<9341> <9341> 7748
<9342> <9345> 3101
<9346> <9346> 7749
<9347> <934c> 3106
<934d> <934d> 7750
<934e> <9354> 3113
<9355> <9355> 7751
<9356> <935d> 3121
<935e> <935e> 7752
<935f> <9366> 3130
<9367> <9367> 7753
<9368> <9369> 3139
<936a> <936a> 7754
<936b> <936f> 3142
<9370> <9370> 7976
<9371> <9371> 7756
<9372> <937e> 3149
<9380> <9383> 3162
<9384> <9384> 7757
<9385> <9397> 3167
<9398> <9398> 7758
<9399> <93bf> 3187
<93c0> <93c0> 7760
<93c1> <93d1> 3227
<93d2> <93d2> 7761
<93d3> <93d8> 3245
<93d9> <93d9> 7763
<93da> <93e3> 3252
endcidrange
100 begincidrange
<93e4> <93e5> 7766
<93e6> <93e7> 3264
<93e8> <93e8> 7768
<93e9> <93f3> 3267
<93f4> <93f4> 7872
<93f5> <93fc> 3279
<9440> <9447> 3287
<9448> <9448> 7769
<9449> <9449> 7977
<944a> <9457> 3297
<9458> <9458> 7770
<9459> <9475> 3312
<9476> <9476> 7771
<9477> <947e> 3342
<9480> <9486> 3350
<9487> <9487> 7772
<9488> <9488> 3358
<9489> <9489> 7773
<948a> <948c> 3360
<948d> <948d> 7774
<948e> <94a1> 3364
<94a2> <94a2> 7775
<94a3> <94ab> 3385
<94ac> <94ac> 7776
<94ad> <94ad> 3395
<94ae> <94ae> 7777
<94af> <94bd> 3397
<94be> <94be> 7978
<94bf> <94d1> 3413
<94d2> <94d2> 7778
<94d3> <94f2> 3433
<94f3> <94f3> 7780
<94f4> <94fc> 3466
<9540> <9540> 3475
<9541> <9542> 7781
<9543> <954d> 3478
<954e> <954e> 7783
<954f> <9550> 3490
<9551> <9551> 7784
<9552> <9553> 3493
<9554> <9554> 7785
<9555> <955e> 3496
<955f> <955f> 7786
<9560> <956c> 3507
<956d> <956d> 7787
<956e> <957e> 3521
<9580> <95c0> 3538
<95c1> <95c1> 7789
<95c2> <95ca> 3604
<95cb> <95cb> 7790
<95cc> <95d0> 3614
<95d1> <95d1> 7979
<95d2> <95d7> 3620
<95d8> <95d8> 7791
<95d9> <95f6> 3627
<95f7> <95f7> 7792
<95f8> <95fc> 3658
<9640> <9647> 3663
<9648> <9648> 7794
<9649> <9669> 3672
<966a> <966a> 7795
<966b> <967e> 3706
<9680> <968f> 3726
<9690> <9690> 7796
<9691> <9697> 3743
<9698> <9698> 7980
<9699> <96ca> 3751
<96cb> <96cb> 7797
<96cc> <96d6> 3802
<96d7> <96d7> 7798
<96d8> <96dc> 3814
<96dd> <96dd> 7799
<96de> <96df> 3820
<96e0> <96e0> 7800
<96e1> <96f7> 3823
<96f8> <96f8> 7801
<96f9> <96f9> 3847
<96fa> <96fa> 7802
<96fb> <96fc> 3849
<9740> <9750> 3851
<9751> <9751> 7804
<9752> <976e> 3869
<976f> <976f> 7805
<9770> <9772> 3899
<9773> <9773> 7806
<9774> <977e> 3903
<9780> <9788> 3914
<9789> <9789> 7807
<978a> <97f7> 3924
<97f8> <97f9> 7809
<97fa> <97fa> 7981
<97fb> <97fc> 4037
<9840> <9840> 7811
<9841> <984f> 4040
<9850> <9850> 7812
<9851> <9857> 4056
<9858> <9858> 7813
<9859> <9872> 4064
<989f> <98fc> 4090
<9940> <9940> 4184
endcidrange
100 begincidrange
<9941> <9941> 7982
<9942> <995b> 4186
<995c> <995c> 7814
<995d> <996b> 4213
<996c> <996c> 7817
<996d> <997e> 4229
<9980> <99b5> 4247
<99b6> <99b6> 7983
<99b7> <99fc> 4302
<9a40> <9a4e> 4372
<9a4f> <9a4f> 7818
<9a50> <9a58> 4388
<9a59> <9a59> 7819
<9a5a> <9a66> 4398
<9a67> <9a67> 7984
<9a68> <9a7c> 4412
<9a7d> <9a7d> 7821
<9a7e> <9a7e> 4434
<9a80> <9a8a> 4435
<9a8b> <9a8b> 7822
<9a8c> <9a8c> 7985
<9a8d> <9ac1> 4448
<9ac2> <9ac2> 7823
<9ac3> <9ac3> 7986
<9ac4> <9ae9> 4503
<9aea> <9aea> 7987
<9aeb> <9afc> 4542
<9b40> <9b5b> 4560
<9b5c> <9b5c> 7824
<9b5d> <9b7e> 4589
<9b80> <9b82> 4623
<9b83> <9b83> 7825
<9b84> <9b97> 4627
<9b98> <9b98> 7988
<9b99> <9b9f> 4648
<9ba0> <9ba0> 7826
<9ba1> <9bfa> 4656
<9bfb> <9bfc> 7989
<9c40> <9c7e> 4748
<9c80> <9ca1> 4811
<9ca2> <9ca2> 7828
<9ca3> <9cfc> 4846
<9d40> <9d46> 4936
<9d47> <9d47> 7991
<9d48> <9d7e> 4944
<9d80> <9d80> 7829
<9d81> <9d8b> 5000
<9d8c> <9d8c> 7830
<9d8d> <9db6> 5012
<9db7> <9db7> 7831
<9db8> <9df7> 5055
<9df8> <9df8> 7992
<9df9> <9dfc> 5120
<9e40> <9e63> 5124
<9e64> <9e64> 7833
<9e65> <9e7e> 5161
<9e80> <9e8a> 5187
<9e8b> <9e8b> 7835
<9e8c> <9efc> 5199
<9f40> <9f7e> 5312
<9f80> <9f80> 5375
<9f81> <9f81> 7993
<9f82> <9fcd> 5377
<9fce> <9fce> 7837
<9fcf> <9fd3> 5454
<9fd4> <9fd4> 7994
<9fd5> <9ff3> 5460
<9ff4> <9ff4> 7995
<9ff5> <9ffc> 5492
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e092> 5563
<e093> <e093> 7838
<e094> <e0a3> 5583
<e0a4> <e0a4> 7839
<e0a5> <e0dc> 5600
<e0dd> <e0dd> 7840
<e0de> <e0fc> 5657
<e140> <e149> 5688
<e14a> <e14a> 7841
<e14b> <e17e> 5699
<e180> <e1ec> 5751
<e1ed> <e1ed> 7845
<e1ee> <e1fc> 5861
<e240> <e268> 5876
<e269> <e269> 7846
<e26a> <e272> 5918
<e273> <e273> 7847
<e274> <e277> 5928
<e278> <e278> 7996
<e279> <e27e> 5933
<e280> <e2b6> 5939
<e2b7> <e2b7> 7848
<e2b8> <e2bd> 5995
<e2be> <e2be> 7997
<e2bf> <e2e1> 6002
<e2e2> <e2e2> 7849
<e2e3> <e2eb> 6038
<e2ec> <e2ec> 7850
<e2ed> <e2fc> 6048
endcidrange
100 begincidrange
<e340> <e357> 6064
<e358> <e358> 7851
<e359> <e359> 6089
<e35a> <e35a> 7852
<e35b> <e364> 6091
<e365> <e365> 7853
<e366> <e37e> 6102
<e380> <e3c6> 6127
<e3c7> <e3c7> 7998
<e3c8> <e3fc> 6199
<e440> <e47e> 6252
<e480> <e483> 6315
<e484> <e484> 7855
<e485> <e488> 6320
<e489> <e489> 7856
<e48a> <e491> 6325
<e492> <e492> 7857
<e493> <e4b8> 6334
<e4b9> <e4b9> 7859
<e4ba> <e4ca> 6373
<e4cb> <e4cb> 7999
<e4cc> <e4fc> 6391
<e540> <e57e> 6440
<e580> <e59d> 6503
<e59e> <e59e> 8000
<e59f> <e5b9> 6534
<e5ba> <e5bb> 8001
<e5bc> <e5ec> 6563
<e5ed> <e5ed> 7864
<e5ee> <e5fc> 6613
<e640> <e650> 6628
<e651> <e651> 7865
<e652> <e67e> 6646
<e680> <e685> 6691
<e686> <e686> 7866
<e687> <e6e6> 6698
<e6e7> <e6e7> 7868
<e6e8> <e6fc> 6795
<e740> <e76c> 6816
<e76d> <e76d> 7870
<e76e> <e77e> 6862
<e780> <e7a6> 6879
<e7a7> <e7a7> 7873
<e7a8> <e7ba> 6919
<e7bb> <e7bb> 7874
<e7bc> <e7fc> 6939
<e840> <e87e> 7004
<e880> <e8ce> 7067
<e8cf> <e8cf> 7879
<e8d0> <e8fc> 7147
<e940> <e977> 7192
<e978> <e978> 8003
<e979> <e97e> 7249
<e980> <e9aa> 7255
<e9ab> <e9ab> 7882
<e9ac> <e9b9> 7299
<e9ba> <e9ba> 7883
<e9bb> <e9cb> 7314
<e9cc> <e9cc> 7884
<e9cd> <e9fc> 7332
<ea40> <ea6f> 7380
<ea70> <ea70> 7885
<ea71> <ea71> 8004
<ea72> <ea7e> 7430
<ea80> <ea9c> 7443
<ea9d> <ea9d> 7886
<ea9e> <eaa2> 7473
<eaa3> <eaa4> 8284
<ec40> <ec42> 8005
<ec46> <ec46> 8008
<ec47> <ec47> 768
<ec48> <ec48> 762
<ec49> <ec49> 761
<ec4d> <ec57> 8009
<ec5b> <ec5d> 7601
<ec5e> <ec5e> 8020
<ec5f> <ec5f> 7607
<ec60> <ec62> 8021
<ec63> <ec65> 7604
<ec66> <ec6f> 8024
<ec70> <ec70> 771
<ec71> <ec71> 8034
<ec72> <ec72> 772
<ec73> <ec74> 8035
<ec76> <ec76> 8037
<ec78> <ec78> 7588
<ec79> <ec79> 7585
<ec7a> <ec7a> 8038
<ec7b> <ec7b> 7586
<ec7c> <ec7e> 8039
<ec80> <ec80> 7590
<ec81> <ec81> 8042
<ec82> <ec82> 7592
<ec83> <ec83> 7596
<ec84> <ec84> 8043
<ec85> <ec85> 7598
<ec86> <ec86> 7595
<ec87> <ec88> 8044
<ec89> <ec89> 7599
<ec8a> <ec90> 8046
endcidrange
35 begincidrange
<ec94> <ec99> 8053
<ec9a> <ec9a> 7610
<ec9b> <ec9b> 8059
<ec9e> <ec9e> 8060
<eca7> <ecb0> 8061
<ecb2> <ecc5> 8071
<ecc7> <ecda> 7555
<ecdb> <ecdb> 8091
<ecdc> <ece5> 7575
<ece9> <ecfc> 8092
<ed40> <ed59> 8112
<ed64> <ed64> 7958
<ed68> <ed69> 8138
<ed6a> <ed6a> 7620
<ed6b> <ed6d> 8140
<ed6e> <ed6e> 7619
<ed6f> <ed73> 8143
<ed74> <ed74> 7618
<ed75> <ed78> 8148
<ed7c> <ed7e> 8152
<ed80> <ed8a> 8155
<ed8f> <ed9e> 8166
<ef40> <ef41> 7887
<ef42> <ef42> 8268
<ef43> <ef43> 8274
<ef44> <ef4d> 7889
<ef4e> <ef4e> 8282
<ef4f> <ef4f> 8275
<ef50> <ef50> 8280
<ef51> <ef51> 8277
<ef52> <ef63> 7899
<ef64> <ef79> 7918
<ef7a> <ef7b> 8264
<ef8d> <ef90> 736
<ef91> <ef94> 8182
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,135 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (Add-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (Add-RKSJ-H)
%%BeginResource: CMap (Add-RKSJ-V)
%%Title: (Add-RKSJ-V Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/Add-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Add-RKSJ-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 780 def
/XUID [1 10 25327] def
/WMode 1 def
57 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8165> <8165> 8282
<8166> <8166> 8275
<8167> <8167> 8280
<8168> <8168> 8277
<8169> <817a> 7899
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<82f3> <82f4> 8264
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<ec78> <ec78> 7943
<ec79> <ec79> 7940
<ec7a> <ec7a> 8329
<ec7b> <ec7b> 7941
<ec7c> <ec7c> 8330
<ec7d> <ec7e> 8339
<ec80> <ec80> 7945
<ec81> <ec81> 8338
<ec82> <ec82> 7947
<ec83> <ec83> 7951
<ec84> <ec84> 8348
<ec85> <ec85> 7953
<ec86> <ec86> 7950
<ec87> <ec87> 8344
<ec88> <ec88> 8347
<ec89> <ec89> 7954
<ec8a> <ec8a> 8343
<ec8b> <ec8c> 8349
<ec8d> <ec8d> 8358
<ec8e> <ec8e> 8357
<ec8f> <ec8f> 8353
<ec90> <ec90> 8356
<ec95> <ec95> 8324
<ef92> <ef92> 8333
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,136 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /Adobe-CNS1-0 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 960 def
/XUID [1 10 25394] def
/WMode 0 def
/CIDCount 14099 def
1 begincodespacerange
<0000> <37FF>
endcodespacerange
56 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <3712> 14080
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,147 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 1)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 1 def
end def
/CMapName /Adobe-CNS1-1 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25590] def
/WMode 0 def
/CIDCount 17408 def
1 begincodespacerange
<0000> <43FF>
endcodespacerange
68 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,148 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 2)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 2 def
end def
/CMapName /Adobe-CNS1-2 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25586] def
/WMode 0 def
/CIDCount 17601 def
1 begincodespacerange
<0000> <44FF>
endcodespacerange
69 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44c0> 17408
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,153 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 3 def
end def
/CMapName /Adobe-CNS1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25587] def
/WMode 0 def
/CIDCount 18846 def
1 begincodespacerange
<0000> <49FF>
endcodespacerange
74 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <499d> 18688
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 4)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 4 def
end def
/CMapName /Adobe-CNS1-4 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25595] def
/WMode 0 def
/CIDCount 18965 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4a14> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 5 def
end def
/CMapName /Adobe-CNS1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25598] def
/WMode 0 def
/CIDCount 19088 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4a8f> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 6)
%%Version: 1.000
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 6 def
end def
/CMapName /Adobe-CNS1-6 def
/CMapVersion 1.000 def
/CMapType 1 def
/XUID [1 10 25599] def
/WMode 0 def
/CIDCount 19156 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4ad3> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,111 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 0 def
end def
/CMapName /Adobe-GB1-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/UIDOffset 330 def
/XUID [1 10 25368] def
/WMode 0 def
/CIDCount 7717 def
1 begincodespacerange
<0000> <1EFF>
endcodespacerange
31 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1e24> 7680
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,119 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 1 def
end def
/CMapName /Adobe-GB1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 710 def
/XUID [1 10 25453] def
/WMode 0 def
/CIDCount 9897 def
1 begincodespacerange
<0000> <26FF>
endcodespacerange
39 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26a8> 9728
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,167 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 2 def
end def
/CMapName /Adobe-GB1-2 def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 750 def
/XUID [1 10 25454] def
/WMode 0 def
/CIDCount 22127 def
1 begincodespacerange
<0000> <56FF>
endcodespacerange
87 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <566e> 22016
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,167 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 3 def
end def
/CMapName /Adobe-GB1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25457] def
/WMode 0 def
/CIDCount 22353 def
1 begincodespacerange
<0000> <57FF>
endcodespacerange
88 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <5750> 22272
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,197 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 4)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 4 def
end def
/CMapName /Adobe-GB1-4 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25458] def
/WMode 0 def
/CIDCount 29064 def
1 begincodespacerange
<0000> <71FF>
endcodespacerange
100 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5aff> 23040
<5b00> <5bff> 23296
<5c00> <5cff> 23552
<5d00> <5dff> 23808
<5e00> <5eff> 24064
<5f00> <5fff> 24320
<6000> <60ff> 24576
<6100> <61ff> 24832
<6200> <62ff> 25088
<6300> <63ff> 25344
endcidrange
14 begincidrange
<6400> <64ff> 25600
<6500> <65ff> 25856
<6600> <66ff> 26112
<6700> <67ff> 26368
<6800> <68ff> 26624
<6900> <69ff> 26880
<6a00> <6aff> 27136
<6b00> <6bff> 27392
<6c00> <6cff> 27648
<6d00> <6dff> 27904
<6e00> <6eff> 28160
<6f00> <6fff> 28416
<7000> <70ff> 28672
<7100> <7187> 28928
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,202 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 5 def
end def
/CMapName /Adobe-GB1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25605] def
/WMode 0 def
/CIDCount 30284 def
1 begincodespacerange
<0000> <76FF>
endcodespacerange
100 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5aff> 23040
<5b00> <5bff> 23296
<5c00> <5cff> 23552
<5d00> <5dff> 23808
<5e00> <5eff> 24064
<5f00> <5fff> 24320
<6000> <60ff> 24576
<6100> <61ff> 24832
<6200> <62ff> 25088
<6300> <63ff> 25344
endcidrange
19 begincidrange
<6400> <64ff> 25600
<6500> <65ff> 25856
<6600> <66ff> 26112
<6700> <67ff> 26368
<6800> <68ff> 26624
<6900> <69ff> 26880
<6a00> <6aff> 27136
<6b00> <6bff> 27392
<6c00> <6cff> 27648
<6d00> <6dff> 27904
<6e00> <6eff> 28160
<6f00> <6fff> 28416
<7000> <70ff> 28672
<7100> <71ff> 28928
<7200> <72ff> 29184
<7300> <73ff> 29440
<7400> <74ff> 29696
<7500> <75ff> 29952
<7600> <764b> 30208
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,113 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 0 def
end def
/CMapName /Adobe-Japan1-0 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 480 def
/XUID [1 10 25358] def
/WMode 0 def
/CIDCount 8284 def
1 begincodespacerange
<0000> <20FF>
endcodespacerange
33 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <205b> 8192
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,113 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Adobe-Japan1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 1030 def
/XUID [1 10 25530] def
/WMode 0 def
/CIDCount 8359 def
1 begincodespacerange
<0000> <20FF>
endcodespacerange
33 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20a6> 8192
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,115 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /Adobe-Japan1-2 def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 1065 def
/XUID [1 10 25531] def
/WMode 0 def
/CIDCount 8720 def
1 begincodespacerange
<0000> <22FF>
endcodespacerange
35 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <220f> 8704
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,116 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 3 def
end def
/CMapName /Adobe-Japan1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25534] def
/WMode 0 def
/CIDCount 9354 def
1 begincodespacerange
<0000> <24FF>
endcodespacerange
37 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <2489> 9216
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,140 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 4)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 4 def
end def
/CMapName /Adobe-Japan1-4 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25537] def
/WMode 0 def
/CIDCount 15444 def
1 begincodespacerange
<0000> <3CFF>
endcodespacerange
61 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3c53> 15360
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,159 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 5 def
end def
/CMapName /Adobe-Japan1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25613] def
/WMode 0 def
/CIDCount 20317 def
1 begincodespacerange
<0000> <4FFF>
endcodespacerange
80 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4f5c> 20224
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,170 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 6)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 6 def
end def
/CMapName /Adobe-Japan1-6 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25614] def
/WMode 0 def
/CIDCount 23058 def
1 begincodespacerange
<0000> <5AFF>
endcodespacerange
91 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5a11> 23040
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,104 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan2 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan2) def
/Supplement 0 def
end def
/CMapName /Adobe-Japan2-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/UIDOffset 220 def
/XUID [1 10 25426] def
/WMode 0 def
/CIDCount 6068 def
1 begincodespacerange
<0000> <17FF>
endcodespacerange
24 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17b3> 5888
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,116 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 0 def
end def
/CMapName /Adobe-Korea1-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/XUID [1 10 25408] def
/WMode 0 def
/CIDCount 9333 def
1 begincodespacerange
<0000> <24FF>
endcodespacerange
37 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <2474> 9216
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,151 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 1 def
end def
/CMapName /Adobe-Korea1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 330 def
/XUID [1 10 25418] def
/WMode 0 def
/CIDCount 18155 def
1 begincodespacerange
<0000> <46FF>
endcodespacerange
71 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ea> 17920
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,151 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 2)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 2 def
end def
/CMapName /Adobe-Korea1-2 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25541] def
/WMode 0 def
/CIDCount 18352 def
1 begincodespacerange
<0000> <47FF>
endcodespacerange
72 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47af> 18176
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,337 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (B5pc-H)
%%Title: (B5pc-H Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /B5pc-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 0 def
/XUID [1 10 25382] def
/WMode 0 def
3 begincodespacerange
<00> <80>
<A140> <FCFE>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 61
<a140> <a158> 99
<a159> <a15c> 13743
<a15d> <a17e> 128
<a1a1> <a1f5> 162
<a1f6> <a1f6> 248
<a1f7> <a1f7> 247
<a1f8> <a1fe> 249
<a240> <a27e> 256
<a2a1> <a2fe> 319
<a340> <a37e> 413
<a3a1> <a3bb> 476
<a3bd> <a3bf> 503
<a3c0> <a3e0> 562
<a440> <a47e> 595
<a4a1> <a4fe> 658
<a540> <a57e> 752
<a5a1> <a5fe> 815
<a640> <a67e> 909
<a6a1> <a6fe> 972
<a740> <a77e> 1066
<a7a1> <a7fe> 1129
<a840> <a87e> 1223
<a8a1> <a8fe> 1286
<a940> <a97e> 1380
<a9a1> <a9fe> 1443
<aa40> <aa7e> 1537
<aaa1> <aafe> 1600
<ab40> <ab7e> 1694
<aba1> <abfe> 1757
<ac40> <ac7e> 1851
<aca1> <acfd> 1914
<acfe> <acfe> 2431
<ad40> <ad7e> 2007
<ada1> <adfe> 2070
<ae40> <ae7e> 2164
<aea1> <aefe> 2227
<af40> <af7e> 2321
<afa1> <afcf> 2384
<afd0> <affe> 2432
<b040> <b07e> 2479
<b0a1> <b0fe> 2542
<b140> <b17e> 2636
<b1a1> <b1fe> 2699
<b240> <b27e> 2793
<b2a1> <b2fe> 2856
<b340> <b37e> 2950
<b3a1> <b3fe> 3013
<b440> <b47e> 3107
<b4a1> <b4fe> 3170
<b540> <b57e> 3264
<b5a1> <b5fe> 3327
<b640> <b67e> 3421
<b6a1> <b6fe> 3484
<b740> <b77e> 3578
<b7a1> <b7fe> 3641
<b840> <b87e> 3735
<b8a1> <b8fe> 3798
<b940> <b97e> 3892
<b9a1> <b9fe> 3955
<ba40> <ba7e> 4049
<baa1> <bafe> 4112
<bb40> <bb7e> 4206
<bba1> <bbc7> 4269
<bbc8> <bbfe> 4309
<bc40> <bc7e> 4364
<bca1> <bcfe> 4427
<bd40> <bd7e> 4521
<bda1> <bdfe> 4584
<be40> <be51> 4678
<be52> <be52> 4308
<be53> <be7e> 4696
<bea1> <befe> 4740
<bf40> <bf7e> 4834
<bfa1> <bffe> 4897
<c040> <c07e> 4991
<c0a1> <c0fe> 5054
<c140> <c17e> 5148
<c1a1> <c1aa> 5211
<c1ab> <c1fe> 5222
<c240> <c27e> 5306
<c2a1> <c2ca> 5369
<c2cb> <c2cb> 5221
<c2cc> <c2fe> 5411
<c340> <c360> 5462
<c361> <c37e> 5496
<c3a1> <c3b8> 5526
<c3b9> <c3b9> 5551
<c3ba> <c3ba> 5550
<c3bb> <c3fe> 5552
<c440> <c455> 5620
<c456> <c456> 5495
<c457> <c47e> 5642
<c4a1> <c4fe> 5682
<c540> <c57e> 5776
<c5a1> <c5fe> 5839
<c640> <c67e> 5933
<c940> <c949> 5996
<c94a> <c94a> 628
endcidrange
100 begincidrange
<c94b> <c96b> 6006
<c96c> <c97e> 6040
<c9a1> <c9bd> 6059
<c9be> <c9be> 6039
<c9bf> <c9ec> 6088
<c9ed> <c9fe> 6135
<ca40> <ca7e> 6153
<caa1> <caf6> 6216
<caf7> <caf7> 6134
<caf8> <cafe> 6302
<cb40> <cb7e> 6309
<cba1> <cbfe> 6372
<cc40> <cc7e> 6466
<cca1> <ccfe> 6529
<cd40> <cd7e> 6623
<cda1> <cdfe> 6686
<ce40> <ce7e> 6780
<cea1> <cefe> 6843
<cf40> <cf7e> 6937
<cfa1> <cffe> 7000
<d040> <d07e> 7094
<d0a1> <d0fe> 7157
<d140> <d17e> 7251
<d1a1> <d1fe> 7314
<d240> <d27e> 7408
<d2a1> <d2fe> 7471
<d340> <d37e> 7565
<d3a1> <d3fe> 7628
<d440> <d47e> 7722
<d4a1> <d4fe> 7785
<d540> <d57e> 7879
<d5a1> <d5fe> 7942
<d640> <d67e> 8036
<d6a1> <d6cb> 8099
<d6cc> <d6cc> 8788
<d6cd> <d6fe> 8143
<d740> <d779> 8193
<d77a> <d77a> 8889
<d77b> <d77e> 8251
<d7a1> <d7fe> 8255
<d840> <d87e> 8349
<d8a1> <d8fe> 8412
<d940> <d97e> 8506
<d9a1> <d9fe> 8569
<da40> <da7e> 8663
<daa1> <dade> 8726
<dadf> <dadf> 8142
<dae0> <dafe> 8789
<db40> <db7e> 8820
<dba1> <dba6> 8883
<dba7> <dbfe> 8890
<dc40> <dc7e> 8978
<dca1> <dcfe> 9041
<dd40> <dd7e> 9135
<dda1> <ddfb> 9198
<ddfc> <ddfc> 9089
<ddfd> <ddfe> 9289
<de40> <de7e> 9291
<dea1> <defe> 9354
<df40> <df7e> 9448
<dfa1> <dffe> 9511
<e040> <e07e> 9605
<e0a1> <e0fe> 9668
<e140> <e17e> 9762
<e1a1> <e1fe> 9825
<e240> <e27e> 9919
<e2a1> <e2fe> 9982
<e340> <e37e> 10076
<e3a1> <e3fe> 10139
<e440> <e47e> 10233
<e4a1> <e4fe> 10296
<e540> <e57e> 10390
<e5a1> <e5fe> 10453
<e640> <e67e> 10547
<e6a1> <e6fe> 10610
<e740> <e77e> 10704
<e7a1> <e7fe> 10767
<e840> <e87e> 10861
<e8a1> <e8a2> 10924
<e8a3> <e8fe> 10927
<e940> <e975> 11019
<e976> <e97e> 11074
<e9a1> <e9fe> 11083
<ea40> <ea7e> 11177
<eaa1> <eafe> 11240
<eb40> <eb5a> 11334
<eb5b> <eb7e> 11362
<eba1> <ebf0> 11398
<ebf1> <ebf1> 10926
<ebf2> <ebfe> 11478
<ec40> <ec7e> 11491
<eca1> <ecdd> 11554
<ecde> <ecde> 11073
<ecdf> <ecfe> 11615
<ed40> <ed7e> 11647
<eda1> <eda9> 11710
<edaa> <edfe> 11720
<ee40> <ee7e> 11805
<eea1> <eeea> 11868
<eeeb> <eeeb> 12308
endcidrange
47 begincidrange
<eeec> <eefe> 11942
<ef40> <ef7e> 11961
<efa1> <effe> 12024
<f040> <f055> 12118
<f056> <f056> 11719
<f057> <f07e> 12140
<f0a1> <f0ca> 12180
<f0cb> <f0cb> 11361
<f0cc> <f0fe> 12222
<f140> <f162> 12273
<f163> <f16a> 12309
<f16b> <f16b> 12640
<f16c> <f17e> 12317
<f1a1> <f1fe> 12336
<f240> <f267> 12430
<f268> <f268> 12783
<f269> <f27e> 12470
<f2a1> <f2c2> 12492
<f2c3> <f2fe> 12527
<f340> <f374> 12587
<f375> <f37e> 12641
<f3a1> <f3fe> 12651
<f440> <f465> 12745
<f466> <f47e> 12784
<f4a1> <f4b4> 12809
<f4b5> <f4b5> 12526
<f4b6> <f4fc> 12829
<f4fd> <f4fe> 12901
<f540> <f57e> 12903
<f5a1> <f5fe> 12966
<f640> <f662> 13060
<f663> <f663> 12900
<f664> <f67e> 13095
<f6a1> <f6fe> 13122
<f740> <f77e> 13216
<f7a1> <f7fe> 13279
<f840> <f87e> 13373
<f8a1> <f8fe> 13436
<f940> <f976> 13530
<f977> <f97e> 13586
<f9a1> <f9c3> 13594
<f9c4> <f9c4> 13585
<f9c5> <f9c5> 13629
<f9c6> <f9c6> 13641
<f9c7> <f9d1> 13630
<f9d2> <f9d5> 13642
<fd> <ff> 96
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,90 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (B5pc-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (B5pc-H)
%%BeginResource: CMap (B5pc-V)
%%Title: (B5pc-V Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/B5pc-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /B5pc-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 900 def
/XUID [1 10 25383] def
/WMode 1 def
12 begincidrange
<a14b> <a14b> 13646
<a15a> <a15a> 13743
<a15c> <a15c> 13745
<a15d> <a15e> 130
<a161> <a162> 134
<a165> <a166> 138
<a169> <a16a> 142
<a16d> <a16e> 146
<a171> <a172> 150
<a175> <a176> 154
<a179> <a17a> 158
<a1e3> <a1e3> 13647
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,27 @@
package org.apache.fontbox.cmap;
class CIDRange {
private final char from;
private final char to;
private final int cid;
CIDRange(char from, char to, int cid) {
this.from = from;
this.to = to;
this.cid = cid;
}
public int map(char ch) {
if (this.from <= ch && ch <= this.to)
return this.cid + ch - this.from;
return -1;
}
public int unmap(int code) {
if (this.cid <= code && code <= this.cid + this.to - this.from)
return this.from + code - this.cid;
return -1;
}
}

View file

@ -0,0 +1,190 @@
package org.apache.fontbox.cmap;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CMap {
private int wmode = 0;
private String cmapName = null;
private String cmapVersion = null;
private int cmapType = -1;
private String registry = null;
private String ordering = null;
private int supplement = 0;
private int minCodeLength = 4;
private int maxCodeLength;
private final List<CodespaceRange> codespaceRanges = new ArrayList<CodespaceRange>();
private final Map<Integer, String> charToUnicode = new HashMap<Integer, String>();
private final Map<Integer, Integer> codeToCid = new HashMap<Integer, Integer>();
private final List<CIDRange> codeToCidRanges = new ArrayList<CIDRange>();
private static final String SPACE = " ";
private int spaceMapping = -1;
public boolean hasCIDMappings() {
return (!this.codeToCid.isEmpty() || !this.codeToCidRanges.isEmpty());
}
public boolean hasUnicodeMappings() {
return !this.charToUnicode.isEmpty();
}
public String toUnicode(int code) {
return this.charToUnicode.get(Integer.valueOf(code));
}
public int readCode(InputStream in) throws IOException {
byte[] bytes = new byte[this.maxCodeLength];
in.read(bytes, 0, this.minCodeLength);
for (int i = this.minCodeLength - 1; i < this.maxCodeLength; i++) {
int byteCount = i + 1;
for (CodespaceRange range : this.codespaceRanges) {
if (range.isFullMatch(bytes, byteCount))
return toInt(bytes, byteCount);
}
if (byteCount < this.maxCodeLength)
bytes[byteCount] = (byte)in.read();
}
throw new IOException("CMap is invalid");
}
private int toInt(byte[] data, int dataLen) {
int code = 0;
for (int i = 0; i < dataLen; i++) {
code <<= 8;
code |= (data[i] + 256) % 256;
}
return code;
}
public int toCID(int code) {
Integer cid = this.codeToCid.get(Integer.valueOf(code));
if (cid != null)
return cid;
for (CIDRange range : this.codeToCidRanges) {
int ch = range.map((char)code);
if (ch != -1)
return ch;
}
return 0;
}
private int getCodeFromArray(byte[] data, int offset, int length) {
int code = 0;
for (int i = 0; i < length; i++) {
code <<= 8;
code |= (data[offset + i] + 256) % 256;
}
return code;
}
void addCharMapping(byte[] codes, String unicode) {
int code = getCodeFromArray(codes, 0, codes.length);
this.charToUnicode.put(Integer.valueOf(code), unicode);
if (" ".equals(unicode))
this.spaceMapping = code;
}
void addCIDMapping(int code, int cid) {
this.codeToCid.put(Integer.valueOf(cid), Integer.valueOf(code));
}
void addCIDRange(char from, char to, int cid) {
this.codeToCidRanges.add(new CIDRange(from, to, cid));
}
void addCodespaceRange(CodespaceRange range) {
this.codespaceRanges.add(range);
this.maxCodeLength = Math.max(this.maxCodeLength, range.getCodeLength());
this.minCodeLength = Math.min(this.minCodeLength, range.getCodeLength());
}
void useCmap(CMap cmap) {
for (CodespaceRange codespaceRange : cmap.codespaceRanges)
addCodespaceRange(codespaceRange);
this.charToUnicode.putAll(cmap.charToUnicode);
this.codeToCid.putAll(cmap.codeToCid);
this.codeToCidRanges.addAll(cmap.codeToCidRanges);
}
public int getWMode() {
return this.wmode;
}
public void setWMode(int newWMode) {
this.wmode = newWMode;
}
public String getName() {
return this.cmapName;
}
public void setName(String name) {
this.cmapName = name;
}
public String getVersion() {
return this.cmapVersion;
}
public void setVersion(String version) {
this.cmapVersion = version;
}
public int getType() {
return this.cmapType;
}
public void setType(int type) {
this.cmapType = type;
}
public String getRegistry() {
return this.registry;
}
public void setRegistry(String newRegistry) {
this.registry = newRegistry;
}
public String getOrdering() {
return this.ordering;
}
public void setOrdering(String newOrdering) {
this.ordering = newOrdering;
}
public int getSupplement() {
return this.supplement;
}
public void setSupplement(int newSupplement) {
this.supplement = newSupplement;
}
public int getSpaceMapping() {
return this.spaceMapping;
}
public String toString() {
return this.cmapName;
}
}

View file

@ -0,0 +1,497 @@
package org.apache.fontbox.cmap;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PushbackInputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.util.Charsets;
public class CMapParser {
private static final String MARK_END_OF_DICTIONARY = ">>";
private static final String MARK_END_OF_ARRAY = "]";
private final byte[] tokenParserByteBuffer = new byte[512];
public CMap parse(File file) throws IOException {
FileInputStream input = null;
try {
input = new FileInputStream(file);
return parse(input);
} finally {
if (input != null)
input.close();
}
}
public CMap parsePredefined(String name) throws IOException {
InputStream input = null;
try {
input = getExternalCMap(name);
return parse(input);
} finally {
if (input != null)
input.close();
}
}
public CMap parse(InputStream input) throws IOException {
PushbackInputStream cmapStream = new PushbackInputStream(input);
CMap result = new CMap();
Object previousToken = null;
Object token;
while ((token = parseNextToken(cmapStream)) != null) {
if (token instanceof Operator) {
Operator op = (Operator)token;
if (op.op.equals("usecmap")) {
parseUsecmap(previousToken, result);
} else {
if (op.op.equals("endcmap"))
break;
if (op.op.equals("begincodespacerange")) {
parseBegincodespacerange(previousToken, cmapStream, result);
} else if (op.op.equals("beginbfchar")) {
parseBeginbfchar(previousToken, cmapStream, result);
} else if (op.op.equals("beginbfrange")) {
parseBeginbfrange(previousToken, cmapStream, result);
} else if (op.op.equals("begincidchar")) {
parseBegincidchar(previousToken, cmapStream, result);
} else if (op.op.equals("begincidrange")) {
parseBegincidrange(previousToken, cmapStream, result);
}
}
} else if (token instanceof LiteralName) {
parseLiteralName(token, cmapStream, result);
}
previousToken = token;
}
return result;
}
private void parseUsecmap(Object previousToken, CMap result) throws IOException {
LiteralName useCmapName = (LiteralName)previousToken;
InputStream useStream = getExternalCMap(useCmapName.name);
CMap useCMap = parse(useStream);
result.useCmap(useCMap);
}
private void parseLiteralName(Object token, PushbackInputStream cmapStream, CMap result) throws IOException {
LiteralName literal = (LiteralName)token;
if ("WMode".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setWMode(((Integer)next).intValue());
} else if ("CMapName".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof LiteralName)
result.setName(((LiteralName)next).name);
} else if ("CMapVersion".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Number) {
result.setVersion(next.toString());
} else if (next instanceof String) {
result.setVersion((String)next);
}
} else if ("CMapType".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setType(((Integer)next).intValue());
} else if ("Registry".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof String)
result.setRegistry((String)next);
} else if ("Ordering".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof String)
result.setOrdering((String)next);
} else if ("Supplement".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setSupplement(((Integer)next).intValue());
}
}
private void parseBegincodespacerange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcodespacerange"))
throw new IOException("Error : ~codespacerange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startRange = (byte[])nextToken;
byte[] endRange = (byte[])parseNextToken(cmapStream);
CodespaceRange range = new CodespaceRange();
range.setStart(startRange);
range.setEnd(endRange);
result.addCodespaceRange(range);
}
}
private void parseBeginbfchar(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endbfchar"))
throw new IOException("Error : ~bfchar contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] inputCode = (byte[])nextToken;
nextToken = parseNextToken(cmapStream);
if (nextToken instanceof byte[]) {
byte[] bytes = (byte[])nextToken;
String value = createStringFromBytes(bytes);
result.addCharMapping(inputCode, value);
} else if (nextToken instanceof LiteralName) {
result.addCharMapping(inputCode, ((LiteralName)nextToken).name);
} else {
throw new IOException("Error parsing CMap beginbfchar, expected{COSString or COSName} and not " + nextToken);
}
}
}
private void parseBegincidrange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
int numberOfLines = (Integer)previousToken;
for (int n = 0; n < numberOfLines; n++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcidrange"))
throw new IOException("Error : ~cidrange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startCode = (byte[])nextToken;
int start = createIntFromBytes(startCode);
byte[] endCode = (byte[])parseNextToken(cmapStream);
int end = createIntFromBytes(endCode);
int mappedCode = (Integer)parseNextToken(cmapStream);
if (startCode.length <= 2 && endCode.length <= 2) {
result.addCIDRange((char)start, (char)end, mappedCode);
} else {
int endOfMappings = mappedCode + end - start;
while (mappedCode <= endOfMappings) {
int mappedCID = createIntFromBytes(startCode);
result.addCIDMapping(mappedCode++, mappedCID);
increment(startCode);
}
}
}
}
private void parseBegincidchar(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcidchar"))
throw new IOException("Error : ~cidchar contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] inputCode = (byte[])nextToken;
int mappedCode = (Integer)parseNextToken(cmapStream);
int mappedCID = createIntFromBytes(inputCode);
result.addCIDMapping(mappedCode, mappedCID);
}
}
private void parseBeginbfrange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
byte[] tokenBytes;
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endbfrange"))
throw new IOException("Error : ~bfrange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startCode = (byte[])nextToken;
byte[] endCode = (byte[])parseNextToken(cmapStream);
nextToken = parseNextToken(cmapStream);
List<byte[]> array = null;
if (nextToken instanceof List) {
array = (List<byte[]>)nextToken;
tokenBytes = array.get(0);
} else {
tokenBytes = (byte[])nextToken;
}
boolean done = false;
int arrayIndex = 0;
while (!done) {
if (compare(startCode, endCode) >= 0)
done = true;
String value = createStringFromBytes(tokenBytes);
result.addCharMapping(startCode, value);
increment(startCode);
if (array == null) {
increment(tokenBytes);
continue;
}
arrayIndex++;
if (arrayIndex < array.size())
tokenBytes = array.get(arrayIndex);
}
}
}
protected InputStream getExternalCMap(String name) throws IOException {
URL url = getClass().getResource(name);
if (url == null)
throw new IOException("Error: Could not find referenced cmap stream " + name);
return url.openStream();
}
private Object parseNextToken(PushbackInputStream is) throws IOException {
byte[] arrayOfByte1;
LiteralName literalName;
Operator operator;
StringBuffer stringBuffer1;
int secondCloseBrace;
List<Object> list;
int theNextByte;
StringBuffer buffer;
int i;
Object nextToken;
int multiplyer, stringByte;
String value;
int bufferIndex;
byte[] finalResult;
Object<Object> retval = null;
int nextByte = is.read();
while (nextByte == 9 || nextByte == 32 || nextByte == 13 || nextByte == 10)
nextByte = is.read();
switch (nextByte) {
case 37:
stringBuffer1 = new StringBuffer();
stringBuffer1.append((char)nextByte);
readUntilEndOfLine(is, stringBuffer1);
retval = (Object<Object>)stringBuffer1.toString();
break;
case 40:
stringBuffer1 = new StringBuffer();
i = is.read();
while (i != -1 && i != 41) {
stringBuffer1.append((char)i);
i = is.read();
}
retval = (Object<Object>)stringBuffer1.toString();
break;
case 62:
secondCloseBrace = is.read();
if (secondCloseBrace == 62) {
retval = (Object<Object>)">>";
break;
}
throw new IOException("Error: expected the end of a dictionary.");
case 93:
retval = (Object<Object>)"]";
break;
case 91:
list = new ArrayList();
nextToken = parseNextToken(is);
while (nextToken != null && !"]".equals(nextToken)) {
list.add(nextToken);
nextToken = parseNextToken(is);
}
retval = (Object<Object>)list;
break;
case 60:
theNextByte = is.read();
if (theNextByte == 60) {
Map<String, Object> result = new HashMap<String, Object>();
Object key = parseNextToken(is);
while (key instanceof LiteralName && !">>".equals(key)) {
Object object = parseNextToken(is);
result.put(((LiteralName)key).name, object);
key = parseNextToken(is);
}
Map<String, Object> map1 = result;
break;
}
multiplyer = 16;
bufferIndex = -1;
while (theNextByte != -1 && theNextByte != 62) {
int intValue = 0;
if (theNextByte >= 48 && theNextByte <= 57) {
intValue = theNextByte - 48;
} else if (theNextByte >= 65 && theNextByte <= 70) {
intValue = 10 + theNextByte - 65;
} else if (theNextByte >= 97 && theNextByte <= 102) {
intValue = 10 + theNextByte - 97;
} else {
if (isWhitespaceOrEOF(theNextByte)) {
theNextByte = is.read();
continue;
}
throw new IOException("Error: expected hex character and not " + (char)theNextByte + ":" + theNextByte);
}
intValue *= multiplyer;
if (multiplyer == 16) {
bufferIndex++;
this.tokenParserByteBuffer[bufferIndex] = 0;
multiplyer = 1;
} else {
multiplyer = 16;
}
this.tokenParserByteBuffer[bufferIndex] = (byte)(this.tokenParserByteBuffer[bufferIndex] + intValue);
theNextByte = is.read();
}
finalResult = new byte[bufferIndex + 1];
System.arraycopy(this.tokenParserByteBuffer, 0, finalResult, 0, bufferIndex + 1);
arrayOfByte1 = finalResult;
break;
case 47:
buffer = new StringBuffer();
stringByte = is.read();
while (!isWhitespaceOrEOF(stringByte) && !isDelimiter(stringByte)) {
buffer.append((char)stringByte);
stringByte = is.read();
}
if (isDelimiter(stringByte))
is.unread(stringByte);
literalName = new LiteralName(buffer.toString());
break;
case -1:
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
buffer = new StringBuffer();
buffer.append((char)nextByte);
nextByte = is.read();
while (!isWhitespaceOrEOF(nextByte) && (Character.isDigit((char)nextByte) || nextByte == 46)) {
buffer.append((char)nextByte);
nextByte = is.read();
}
is.unread(nextByte);
value = buffer.toString();
if (value.indexOf('.') >= 0) {
Double double_ = new Double(value);
} else {
Integer integer = Integer.valueOf(value);
}
break;
default:
buffer = new StringBuffer();
buffer.append((char)nextByte);
nextByte = is.read();
while (!isWhitespaceOrEOF(nextByte) && !isDelimiter(nextByte) && !Character.isDigit(nextByte)) {
buffer.append((char)nextByte);
nextByte = is.read();
}
if (isDelimiter(nextByte) || Character.isDigit(nextByte))
is.unread(nextByte);
operator = new Operator(buffer.toString());
break;
}
return operator;
}
private void readUntilEndOfLine(InputStream is, StringBuffer buf) throws IOException {
int nextByte = is.read();
while (nextByte != -1 && nextByte != 13 && nextByte != 10) {
buf.append((char)nextByte);
nextByte = is.read();
}
}
private boolean isWhitespaceOrEOF(int aByte) {
return (aByte == -1 || aByte == 32 || aByte == 13 || aByte == 10);
}
private boolean isDelimiter(int aByte) {
switch (aByte) {
case 37:
case 40:
case 41:
case 47:
case 60:
case 62:
case 91:
case 93:
case 123:
case 125:
return true;
}
return false;
}
private void increment(byte[] data) {
increment(data, data.length - 1);
}
private void increment(byte[] data, int position) {
if (position > 0 && (data[position] + 256) % 256 == 255) {
data[position] = 0;
increment(data, position - 1);
} else {
data[position] = (byte)(data[position] + 1);
}
}
private int createIntFromBytes(byte[] bytes) {
int intValue = (bytes[0] + 256) % 256;
if (bytes.length == 2) {
intValue <<= 8;
intValue += (bytes[1] + 256) % 256;
}
return intValue;
}
private String createStringFromBytes(byte[] bytes) throws IOException {
String retval;
if (bytes.length == 1) {
retval = new String(bytes, Charsets.ISO_8859_1);
} else {
retval = new String(bytes, Charsets.UTF_16BE);
}
return retval;
}
private int compare(byte[] first, byte[] second) {
int retval = 1;
int firstLength = first.length;
for (int i = 0; i < firstLength; ) {
if (first[i] == second[i]) {
i++;
continue;
}
if ((first[i] + 256) % 256 < (second[i] + 256) % 256) {
retval = -1;
break;
}
retval = 1;
break;
}
return retval;
}
private final class LiteralName {
private String name;
private LiteralName(String theName) {
this.name = theName;
}
}
private final class Operator {
private String op;
private Operator(String theOp) {
this.op = theOp;
}
}
}

View file

@ -0,0 +1,490 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (CNS-EUC-H)
%%Title: (CNS-EUC-H Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /CNS-EUC-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 300 def
/XUID [1 10 25388] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8EA1A1A1> <8EA1FEFE>
<8EA2A1A1> <8EA2FEFE>
<8EA3A1A1> <8EA3FEFE>
<A1A1> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 13648
endnotdefrange
100 begincidrange
<20> <7e> 13648
<8ea1a1a1> <8ea1a1fe> 99
<8ea1a2a1> <8ea1a2fe> 193
<8ea1a3a1> <8ea1a3ce> 287
<8ea1a4a1> <8ea1a4fe> 333
<8ea1a5a1> <8ea1a5ec> 427
<8ea1a5ee> <8ea1a5f0> 503
<8ea1a6a1> <8ea1a6be> 506
<8ea1a7a1> <8ea1a7a1> 595
<8ea1a7a2> <8ea1a7a4> 536
<8ea1a7a5> <8ea1a7a5> 596
<8ea1a7a6> <8ea1a7a6> 539
<8ea1a7a7> <8ea1a7a7> 602
<8ea1a7a8> <8ea1a7a8> 540
<8ea1a7a9> <8ea1a7ac> 603
<8ea1a7ad> <8ea1a7af> 541
<8ea1a7b0> <8ea1a7b0> 607
<8ea1a7b1> <8ea1a7b1> 5998
<8ea1a7b2> <8ea1a7b2> 608
<8ea1a7b3> <8ea1a7b3> 610
<8ea1a7b4> <8ea1a7b4> 544
<8ea1a7b5> <8ea1a7b5> 611
<8ea1a7b6> <8ea1a7b6> 5999
<8ea1a7b7> <8ea1a7b7> 545
<8ea1a7b8> <8ea1a7b9> 612
<8ea1a7ba> <8ea1a7ba> 546
<8ea1a7bb> <8ea1a7bb> 6000
<8ea1a7bc> <8ea1a7bc> 547
<8ea1a7bd> <8ea1a7bd> 614
<8ea1a7be> <8ea1a7be> 633
<8ea1a7bf> <8ea1a7bf> 6005
<8ea1a7c0> <8ea1a7c1> 634
<8ea1a7c2> <8ea1a7c2> 548
<8ea1a7c3> <8ea1a7c6> 636
<8ea1a7c7> <8ea1a7c7> 549
<8ea1a7c8> <8ea1a7cb> 642
<8ea1a7cc> <8ea1a7cc> 6006
<8ea1a7cd> <8ea1a7cd> 646
<8ea1a7ce> <8ea1a7ce> 550
<8ea1a7cf> <8ea1a7d0> 648
<8ea1a7d1> <8ea1a7d2> 652
<8ea1a7d3> <8ea1a7d5> 551
<8ea1a7d6> <8ea1a7d8> 654
<8ea1a7d9> <8ea1a7da> 554
<8ea1a7db> <8ea1a7db> 6007
<8ea1a7dc> <8ea1a7df> 720
<8ea1a7e0> <8ea1a7e0> 725
<8ea1a7e1> <8ea1a7e1> 556
<8ea1a7e2> <8ea1a7e5> 726
<8ea1a7e6> <8ea1a7e6> 557
<8ea1a7e7> <8ea1a7ed> 730
<8ea1a7ee> <8ea1a7ee> 6026
<8ea1a7ef> <8ea1a7f2> 737
<8ea1a7f3> <8ea1a7f3> 6028
<8ea1a7f4> <8ea1a7f8> 741
<8ea1a7f9> <8ea1a7f9> 6029
<8ea1a7fa> <8ea1a7fd> 746
<8ea1a7fe> <8ea1a7fe> 854
<8ea1a8a1> <8ea1a8a6> 855
<8ea1a8a7> <8ea1a8a7> 862
<8ea1a8a8> <8ea1a8a8> 866
<8ea1a8a9> <8ea1a8aa> 558
<8ea1a8ab> <8ea1a8b2> 867
<8ea1a8b3> <8ea1a8b3> 6066
<8ea1a8b4> <8ea1a8b6> 875
<8ea1a8b7> <8ea1a8ba> 1014
<8ea1a8bb> <8ea1a8bb> 6162
<8ea1a8bc> <8ea1a8be> 1018
<8ea1a8bf> <8ea1a8c3> 1022
<8ea1a8c4> <8ea1a8cc> 1029
<8ea1a8cd> <8ea1a8cd> 6163
<8ea1a8ce> <8ea1a8ce> 6168
<8ea1a8cf> <8ea1a8d2> 1039
<8ea1a8d3> <8ea1a8d3> 6169
<8ea1a8d4> <8ea1a8d9> 1288
<8ea1a8da> <8ea1a8da> 6375
<8ea1a8db> <8ea1a8e2> 1294
<8ea1a8e3> <8ea1a8e3> 560
<8ea1a8e4> <8ea1a8e4> 1307
<8ea1a8e5> <8ea1a8e7> 1312
<8ea1a8e8> <8ea1a8eb> 1686
<8ea1a8ec> <8ea1a8ec> 561
<8ea1a8ed> <8ea1a8f0> 1695
<8ea1a8f1> <8ea1a8fb> 2086
<8ea1a8fc> <8ea1a8fe> 2549
<8ea1a9a1> <8ea1a9a1> 7731
<8ea1a9a2> <8ea1a9a2> 2552
<8ea1a9a3> <8ea1a9a3> 7732
<8ea1a9a4> <8ea1a9a5> 2553
<8ea1a9a6> <8ea1a9ab> 3041
<8ea1a9ac> <8ea1a9ae> 3515
<8ea1a9af> <8ea1a9af> 9056
<8ea1a9b0> <8ea1a9b0> 9746
<8ea1a9b1> <8ea1a9b3> 3963
<8ea1a9b4> <8ea1a9b5> 4352
<8ea1a9b6> <8ea1a9b6> 4745
<8ea1a9b7> <8ea1a9b8> 5042
<8ea1a9b9> <8ea1a9b9> 12045
<8ea1c2a1> <8ea1c2c1> 562
<8ea1c4a1> <8ea1c4fe> 595
endcidrange
100 begincidrange
<8ea1c5a1> <8ea1c5fe> 689
<8ea1c6a1> <8ea1c6fe> 783
<8ea1c7a1> <8ea1c7fe> 877
<8ea1c8a1> <8ea1c8fe> 971
<8ea1c9a1> <8ea1c9fe> 1065
<8ea1caa1> <8ea1cafe> 1159
<8ea1cba1> <8ea1cbfe> 1253
<8ea1cca1> <8ea1ccfe> 1347
<8ea1cda1> <8ea1cdfe> 1441
<8ea1cea1> <8ea1cefe> 1535
<8ea1cfa1> <8ea1cffe> 1629
<8ea1d0a1> <8ea1d0fe> 1723
<8ea1d1a1> <8ea1d1fe> 1817
<8ea1d2a1> <8ea1d2fe> 1911
<8ea1d3a1> <8ea1d3fe> 2005
<8ea1d4a1> <8ea1d4fe> 2099
<8ea1d5a1> <8ea1d5fe> 2193
<8ea1d6a1> <8ea1d6fe> 2287
<8ea1d7a1> <8ea1d7fe> 2381
<8ea1d8a1> <8ea1d8fe> 2475
<8ea1d9a1> <8ea1d9fe> 2569
<8ea1daa1> <8ea1dafe> 2663
<8ea1dba1> <8ea1dbfe> 2757
<8ea1dca1> <8ea1dcfe> 2851
<8ea1dda1> <8ea1ddfe> 2945
<8ea1dea1> <8ea1defe> 3039
<8ea1dfa1> <8ea1dffe> 3133
<8ea1e0a1> <8ea1e0fe> 3227
<8ea1e1a1> <8ea1e1fe> 3321
<8ea1e2a1> <8ea1e2fe> 3415
<8ea1e3a1> <8ea1e3fe> 3509
<8ea1e4a1> <8ea1e4fe> 3603
<8ea1e5a1> <8ea1e5fe> 3697
<8ea1e6a1> <8ea1e6fe> 3791
<8ea1e7a1> <8ea1e7fe> 3885
<8ea1e8a1> <8ea1e8fe> 3979
<8ea1e9a1> <8ea1e9fe> 4073
<8ea1eaa1> <8ea1eafe> 4167
<8ea1eba1> <8ea1ebfe> 4261
<8ea1eca1> <8ea1ecfe> 4355
<8ea1eda1> <8ea1edfe> 4449
<8ea1eea1> <8ea1eefe> 4543
<8ea1efa1> <8ea1effe> 4637
<8ea1f0a1> <8ea1f0fe> 4731
<8ea1f1a1> <8ea1f1fe> 4825
<8ea1f2a1> <8ea1f2fe> 4919
<8ea1f3a1> <8ea1f3fe> 5013
<8ea1f4a1> <8ea1f4fe> 5107
<8ea1f5a1> <8ea1f5fe> 5201
<8ea1f6a1> <8ea1f6fe> 5295
<8ea1f7a1> <8ea1f7fe> 5389
<8ea1f8a1> <8ea1f8fe> 5483
<8ea1f9a1> <8ea1f9fe> 5577
<8ea1faa1> <8ea1fafe> 5671
<8ea1fba1> <8ea1fbfe> 5765
<8ea1fca1> <8ea1fcfe> 5859
<8ea1fda1> <8ea1fdcb> 5953
<8ea2a1a1> <8ea2a1fe> 5996
<8ea2a2a1> <8ea2a2fe> 6090
<8ea2a3a1> <8ea2a3fe> 6184
<8ea2a4a1> <8ea2a4fe> 6278
<8ea2a5a1> <8ea2a5fe> 6372
<8ea2a6a1> <8ea2a6fe> 6466
<8ea2a7a1> <8ea2a7fe> 6560
<8ea2a8a1> <8ea2a8fe> 6654
<8ea2a9a1> <8ea2a9fe> 6748
<8ea2aaa1> <8ea2aafe> 6842
<8ea2aba1> <8ea2abfe> 6936
<8ea2aca1> <8ea2acfe> 7030
<8ea2ada1> <8ea2adfe> 7124
<8ea2aea1> <8ea2aefe> 7218
<8ea2afa1> <8ea2affe> 7312
<8ea2b0a1> <8ea2b0fe> 7406
<8ea2b1a1> <8ea2b1fe> 7500
<8ea2b2a1> <8ea2b2fe> 7594
<8ea2b3a1> <8ea2b3fe> 7688
<8ea2b4a1> <8ea2b4fe> 7782
<8ea2b5a1> <8ea2b5fe> 7876
<8ea2b6a1> <8ea2b6fe> 7970
<8ea2b7a1> <8ea2b7fe> 8064
<8ea2b8a1> <8ea2b8fe> 8158
<8ea2b9a1> <8ea2b9fe> 8252
<8ea2baa1> <8ea2bafe> 8346
<8ea2bba1> <8ea2bbfe> 8440
<8ea2bca1> <8ea2bcfe> 8534
<8ea2bda1> <8ea2bdfe> 8628
<8ea2bea1> <8ea2befe> 8722
<8ea2bfa1> <8ea2bffe> 8816
<8ea2c0a1> <8ea2c0fe> 8910
<8ea2c1a1> <8ea2c1fe> 9004
<8ea2c2a1> <8ea2c2fe> 9098
<8ea2c3a1> <8ea2c3fe> 9192
<8ea2c4a1> <8ea2c4fe> 9286
<8ea2c5a1> <8ea2c5fe> 9380
<8ea2c6a1> <8ea2c6fe> 9474
<8ea2c7a1> <8ea2c7fe> 9568
<8ea2c8a1> <8ea2c8fe> 9662
<8ea2c9a1> <8ea2c9fe> 9756
<8ea2caa1> <8ea2cafe> 9850
<8ea2cba1> <8ea2cbfe> 9944
endcidrange
100 begincidrange
<8ea2cca1> <8ea2ccfe> 10038
<8ea2cda1> <8ea2cdfe> 10132
<8ea2cea1> <8ea2cefe> 10226
<8ea2cfa1> <8ea2cffe> 10320
<8ea2d0a1> <8ea2d0fe> 10414
<8ea2d1a1> <8ea2d1fe> 10508
<8ea2d2a1> <8ea2d2fe> 10602
<8ea2d3a1> <8ea2d3fe> 10696
<8ea2d4a1> <8ea2d4fe> 10790
<8ea2d5a1> <8ea2d5fe> 10884
<8ea2d6a1> <8ea2d6fe> 10978
<8ea2d7a1> <8ea2d7fe> 11072
<8ea2d8a1> <8ea2d8fe> 11166
<8ea2d9a1> <8ea2d9fe> 11260
<8ea2daa1> <8ea2dafe> 11354
<8ea2dba1> <8ea2dbfe> 11448
<8ea2dca1> <8ea2dcfe> 11542
<8ea2dda1> <8ea2ddfe> 11636
<8ea2dea1> <8ea2defe> 11730
<8ea2dfa1> <8ea2dffe> 11824
<8ea2e0a1> <8ea2e0fe> 11918
<8ea2e1a1> <8ea2e1fe> 12012
<8ea2e2a1> <8ea2e2fe> 12106
<8ea2e3a1> <8ea2e3fe> 12200
<8ea2e4a1> <8ea2e4fe> 12294
<8ea2e5a1> <8ea2e5fe> 12388
<8ea2e6a1> <8ea2e6fe> 12482
<8ea2e7a1> <8ea2e7fe> 12576
<8ea2e8a1> <8ea2e8fe> 12670
<8ea2e9a1> <8ea2e9fe> 12764
<8ea2eaa1> <8ea2eafe> 12858
<8ea2eba1> <8ea2ebfe> 12952
<8ea2eca1> <8ea2ecfe> 13046
<8ea2eda1> <8ea2edfe> 13140
<8ea2eea1> <8ea2eefe> 13234
<8ea2efa1> <8ea2effe> 13328
<8ea2f0a1> <8ea2f0fe> 13422
<8ea2f1a1> <8ea2f1fe> 13516
<8ea2f2a1> <8ea2f2c4> 13610
<a1a1> <a1fe> 99
<a2a1> <a2fe> 193
<a3a1> <a3ce> 287
<a4a1> <a4fe> 333
<a5a1> <a5ec> 427
<a5ee> <a5f0> 503
<a6a1> <a6be> 506
<a7a1> <a7a1> 595
<a7a2> <a7a4> 536
<a7a5> <a7a5> 596
<a7a6> <a7a6> 539
<a7a7> <a7a7> 602
<a7a8> <a7a8> 540
<a7a9> <a7ac> 603
<a7ad> <a7af> 541
<a7b0> <a7b0> 607
<a7b1> <a7b1> 5998
<a7b2> <a7b2> 608
<a7b3> <a7b3> 610
<a7b4> <a7b4> 544
<a7b5> <a7b5> 611
<a7b6> <a7b6> 5999
<a7b7> <a7b7> 545
<a7b8> <a7b9> 612
<a7ba> <a7ba> 546
<a7bb> <a7bb> 6000
<a7bc> <a7bc> 547
<a7bd> <a7bd> 614
<a7be> <a7be> 633
<a7bf> <a7bf> 6005
<a7c0> <a7c1> 634
<a7c2> <a7c2> 548
<a7c3> <a7c6> 636
<a7c7> <a7c7> 549
<a7c8> <a7cb> 642
<a7cc> <a7cc> 6006
<a7cd> <a7cd> 646
<a7ce> <a7ce> 550
<a7cf> <a7d0> 648
<a7d1> <a7d2> 652
<a7d3> <a7d5> 551
<a7d6> <a7d8> 654
<a7d9> <a7da> 554
<a7db> <a7db> 6007
<a7dc> <a7df> 720
<a7e0> <a7e0> 725
<a7e1> <a7e1> 556
<a7e2> <a7e5> 726
<a7e6> <a7e6> 557
<a7e7> <a7ed> 730
<a7ee> <a7ee> 6026
<a7ef> <a7f2> 737
<a7f3> <a7f3> 6028
<a7f4> <a7f8> 741
<a7f9> <a7f9> 6029
<a7fa> <a7fd> 746
<a7fe> <a7fe> 854
<a8a1> <a8a6> 855
<a8a7> <a8a7> 862
<a8a8> <a8a8> 866
<a8a9> <a8aa> 558
endcidrange
95 begincidrange
<a8ab> <a8b2> 867
<a8b3> <a8b3> 6066
<a8b4> <a8b6> 875
<a8b7> <a8ba> 1014
<a8bb> <a8bb> 6162
<a8bc> <a8be> 1018
<a8bf> <a8c3> 1022
<a8c4> <a8cc> 1029
<a8cd> <a8cd> 6163
<a8ce> <a8ce> 6168
<a8cf> <a8d2> 1039
<a8d3> <a8d3> 6169
<a8d4> <a8d9> 1288
<a8da> <a8da> 6375
<a8db> <a8e2> 1294
<a8e3> <a8e3> 560
<a8e4> <a8e4> 1307
<a8e5> <a8e7> 1312
<a8e8> <a8eb> 1686
<a8ec> <a8ec> 561
<a8ed> <a8f0> 1695
<a8f1> <a8fb> 2086
<a8fc> <a8fe> 2549
<a9a1> <a9a1> 7731
<a9a2> <a9a2> 2552
<a9a3> <a9a3> 7732
<a9a4> <a9a5> 2553
<a9a6> <a9ab> 3041
<a9ac> <a9ae> 3515
<a9af> <a9af> 9056
<a9b0> <a9b0> 9746
<a9b1> <a9b3> 3963
<a9b4> <a9b5> 4352
<a9b6> <a9b6> 4745
<a9b7> <a9b8> 5042
<a9b9> <a9b9> 12045
<c2a1> <c2c1> 562
<c4a1> <c4fe> 595
<c5a1> <c5fe> 689
<c6a1> <c6fe> 783
<c7a1> <c7fe> 877
<c8a1> <c8fe> 971
<c9a1> <c9fe> 1065
<caa1> <cafe> 1159
<cba1> <cbfe> 1253
<cca1> <ccfe> 1347
<cda1> <cdfe> 1441
<cea1> <cefe> 1535
<cfa1> <cffe> 1629
<d0a1> <d0fe> 1723
<d1a1> <d1fe> 1817
<d2a1> <d2fe> 1911
<d3a1> <d3fe> 2005
<d4a1> <d4fe> 2099
<d5a1> <d5fe> 2193
<d6a1> <d6fe> 2287
<d7a1> <d7fe> 2381
<d8a1> <d8fe> 2475
<d9a1> <d9fe> 2569
<daa1> <dafe> 2663
<dba1> <dbfe> 2757
<dca1> <dcfe> 2851
<dda1> <ddfe> 2945
<dea1> <defe> 3039
<dfa1> <dffe> 3133
<e0a1> <e0fe> 3227
<e1a1> <e1fe> 3321
<e2a1> <e2fe> 3415
<e3a1> <e3fe> 3509
<e4a1> <e4fe> 3603
<e5a1> <e5fe> 3697
<e6a1> <e6fe> 3791
<e7a1> <e7fe> 3885
<e8a1> <e8fe> 3979
<e9a1> <e9fe> 4073
<eaa1> <eafe> 4167
<eba1> <ebfe> 4261
<eca1> <ecfe> 4355
<eda1> <edfe> 4449
<eea1> <eefe> 4543
<efa1> <effe> 4637
<f0a1> <f0fe> 4731
<f1a1> <f1fe> 4825
<f2a1> <f2fe> 4919
<f3a1> <f3fe> 5013
<f4a1> <f4fe> 5107
<f5a1> <f5fe> 5201
<f6a1> <f6fe> 5295
<f7a1> <f7fe> 5389
<f8a1> <f8fe> 5483
<f9a1> <f9fe> 5577
<faa1> <fafe> 5671
<fba1> <fbfe> 5765
<fca1> <fcfe> 5859
<fda1> <fdcb> 5953
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,538 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (CNS-EUC-V)
%%Title: (CNS-EUC-V Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /CNS-EUC-V def
/CMapVersion 10.003 def
/CMapType 1 def
/XUID [1 10 25389] def
/WMode 1 def
5 begincodespacerange
<00> <80>
<8EA1A1A1> <8EA1FEFE>
<8EA2A1A1> <8EA2FEFE>
<8EA3A1A1> <8EA3FEFE>
<A1A1> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 13648
endnotdefrange
100 begincidrange
<20> <7e> 13648
<8ea1a1a1> <8ea1a1ab> 99
<8ea1a1ac> <8ea1a1ac> 13646
<8ea1a1ad> <8ea1a1ba> 111
<8ea1a1bb> <8ea1a1bb> 124
<8ea1a1bc> <8ea1a1bc> 126
<8ea1a1bd> <8ea1a1bd> 126
<8ea1a1be> <8ea1a1bf> 130
<8ea1a1c0> <8ea1a1c1> 130
<8ea1a1c2> <8ea1a1c3> 134
<8ea1a1c4> <8ea1a1c5> 134
<8ea1a1c6> <8ea1a1c7> 138
<8ea1a1c8> <8ea1a1c9> 138
<8ea1a1ca> <8ea1a1cb> 142
<8ea1a1cc> <8ea1a1cd> 142
<8ea1a1ce> <8ea1a1cf> 146
<8ea1a1d0> <8ea1a1d1> 146
<8ea1a1d2> <8ea1a1d3> 150
<8ea1a1d4> <8ea1a1d5> 150
<8ea1a1d6> <8ea1a1d7> 154
<8ea1a1d8> <8ea1a1d9> 154
<8ea1a1da> <8ea1a1db> 158
<8ea1a1dc> <8ea1a1fe> 158
<8ea1a2a1> <8ea1a2c3> 193
<8ea1a2c4> <8ea1a2c4> 13647
<8ea1a2c5> <8ea1a2fe> 229
<8ea1a3a1> <8ea1a3ce> 287
<8ea1a4a1> <8ea1a4fe> 333
<8ea1a5a1> <8ea1a5ec> 427
<8ea1a5ee> <8ea1a5f0> 503
<8ea1a6a1> <8ea1a6be> 506
<8ea1a7a1> <8ea1a7a1> 595
<8ea1a7a2> <8ea1a7a4> 536
<8ea1a7a5> <8ea1a7a5> 596
<8ea1a7a6> <8ea1a7a6> 539
<8ea1a7a7> <8ea1a7a7> 602
<8ea1a7a8> <8ea1a7a8> 540
<8ea1a7a9> <8ea1a7ac> 603
<8ea1a7ad> <8ea1a7af> 541
<8ea1a7b0> <8ea1a7b0> 607
<8ea1a7b1> <8ea1a7b1> 5998
<8ea1a7b2> <8ea1a7b2> 608
<8ea1a7b3> <8ea1a7b3> 610
<8ea1a7b4> <8ea1a7b4> 544
<8ea1a7b5> <8ea1a7b5> 611
<8ea1a7b6> <8ea1a7b6> 5999
<8ea1a7b7> <8ea1a7b7> 545
<8ea1a7b8> <8ea1a7b9> 612
<8ea1a7ba> <8ea1a7ba> 546
<8ea1a7bb> <8ea1a7bb> 6000
<8ea1a7bc> <8ea1a7bc> 547
<8ea1a7bd> <8ea1a7bd> 614
<8ea1a7be> <8ea1a7be> 633
<8ea1a7bf> <8ea1a7bf> 6005
<8ea1a7c0> <8ea1a7c1> 634
<8ea1a7c2> <8ea1a7c2> 548
<8ea1a7c3> <8ea1a7c6> 636
<8ea1a7c7> <8ea1a7c7> 549
<8ea1a7c8> <8ea1a7cb> 642
<8ea1a7cc> <8ea1a7cc> 6006
<8ea1a7cd> <8ea1a7cd> 646
<8ea1a7ce> <8ea1a7ce> 550
<8ea1a7cf> <8ea1a7d0> 648
<8ea1a7d1> <8ea1a7d2> 652
<8ea1a7d3> <8ea1a7d5> 551
<8ea1a7d6> <8ea1a7d8> 654
<8ea1a7d9> <8ea1a7da> 554
<8ea1a7db> <8ea1a7db> 6007
<8ea1a7dc> <8ea1a7df> 720
<8ea1a7e0> <8ea1a7e0> 725
<8ea1a7e1> <8ea1a7e1> 556
<8ea1a7e2> <8ea1a7e5> 726
<8ea1a7e6> <8ea1a7e6> 557
<8ea1a7e7> <8ea1a7ed> 730
<8ea1a7ee> <8ea1a7ee> 6026
<8ea1a7ef> <8ea1a7f2> 737
<8ea1a7f3> <8ea1a7f3> 6028
<8ea1a7f4> <8ea1a7f8> 741
<8ea1a7f9> <8ea1a7f9> 6029
<8ea1a7fa> <8ea1a7fd> 746
<8ea1a7fe> <8ea1a7fe> 854
<8ea1a8a1> <8ea1a8a6> 855
<8ea1a8a7> <8ea1a8a7> 862
<8ea1a8a8> <8ea1a8a8> 866
<8ea1a8a9> <8ea1a8aa> 558
<8ea1a8ab> <8ea1a8b2> 867
<8ea1a8b3> <8ea1a8b3> 6066
<8ea1a8b4> <8ea1a8b6> 875
<8ea1a8b7> <8ea1a8ba> 1014
<8ea1a8bb> <8ea1a8bb> 6162
<8ea1a8bc> <8ea1a8be> 1018
<8ea1a8bf> <8ea1a8c3> 1022
<8ea1a8c4> <8ea1a8cc> 1029
<8ea1a8cd> <8ea1a8cd> 6163
<8ea1a8ce> <8ea1a8ce> 6168
<8ea1a8cf> <8ea1a8d2> 1039
<8ea1a8d3> <8ea1a8d3> 6169
<8ea1a8d4> <8ea1a8d9> 1288
<8ea1a8da> <8ea1a8da> 6375
<8ea1a8db> <8ea1a8e2> 1294
endcidrange
100 begincidrange
<8ea1a8e3> <8ea1a8e3> 560
<8ea1a8e4> <8ea1a8e4> 1307
<8ea1a8e5> <8ea1a8e7> 1312
<8ea1a8e8> <8ea1a8eb> 1686
<8ea1a8ec> <8ea1a8ec> 561
<8ea1a8ed> <8ea1a8f0> 1695
<8ea1a8f1> <8ea1a8fb> 2086
<8ea1a8fc> <8ea1a8fe> 2549
<8ea1a9a1> <8ea1a9a1> 7731
<8ea1a9a2> <8ea1a9a2> 2552
<8ea1a9a3> <8ea1a9a3> 7732
<8ea1a9a4> <8ea1a9a5> 2553
<8ea1a9a6> <8ea1a9ab> 3041
<8ea1a9ac> <8ea1a9ae> 3515
<8ea1a9af> <8ea1a9af> 9056
<8ea1a9b0> <8ea1a9b0> 9746
<8ea1a9b1> <8ea1a9b3> 3963
<8ea1a9b4> <8ea1a9b5> 4352
<8ea1a9b6> <8ea1a9b6> 4745
<8ea1a9b7> <8ea1a9b8> 5042
<8ea1a9b9> <8ea1a9b9> 12045
<8ea1c2a1> <8ea1c2c1> 562
<8ea1c4a1> <8ea1c4fe> 595
<8ea1c5a1> <8ea1c5fe> 689
<8ea1c6a1> <8ea1c6fe> 783
<8ea1c7a1> <8ea1c7fe> 877
<8ea1c8a1> <8ea1c8fe> 971
<8ea1c9a1> <8ea1c9fe> 1065
<8ea1caa1> <8ea1cafe> 1159
<8ea1cba1> <8ea1cbfe> 1253
<8ea1cca1> <8ea1ccfe> 1347
<8ea1cda1> <8ea1cdfe> 1441
<8ea1cea1> <8ea1cefe> 1535
<8ea1cfa1> <8ea1cffe> 1629
<8ea1d0a1> <8ea1d0fe> 1723
<8ea1d1a1> <8ea1d1fe> 1817
<8ea1d2a1> <8ea1d2fe> 1911
<8ea1d3a1> <8ea1d3fe> 2005
<8ea1d4a1> <8ea1d4fe> 2099
<8ea1d5a1> <8ea1d5fe> 2193
<8ea1d6a1> <8ea1d6fe> 2287
<8ea1d7a1> <8ea1d7fe> 2381
<8ea1d8a1> <8ea1d8fe> 2475
<8ea1d9a1> <8ea1d9fe> 2569
<8ea1daa1> <8ea1dafe> 2663
<8ea1dba1> <8ea1dbfe> 2757
<8ea1dca1> <8ea1dcfe> 2851
<8ea1dda1> <8ea1ddfe> 2945
<8ea1dea1> <8ea1defe> 3039
<8ea1dfa1> <8ea1dffe> 3133
<8ea1e0a1> <8ea1e0fe> 3227
<8ea1e1a1> <8ea1e1fe> 3321
<8ea1e2a1> <8ea1e2fe> 3415
<8ea1e3a1> <8ea1e3fe> 3509
<8ea1e4a1> <8ea1e4fe> 3603
<8ea1e5a1> <8ea1e5fe> 3697
<8ea1e6a1> <8ea1e6fe> 3791
<8ea1e7a1> <8ea1e7fe> 3885
<8ea1e8a1> <8ea1e8fe> 3979
<8ea1e9a1> <8ea1e9fe> 4073
<8ea1eaa1> <8ea1eafe> 4167
<8ea1eba1> <8ea1ebfe> 4261
<8ea1eca1> <8ea1ecfe> 4355
<8ea1eda1> <8ea1edfe> 4449
<8ea1eea1> <8ea1eefe> 4543
<8ea1efa1> <8ea1effe> 4637
<8ea1f0a1> <8ea1f0fe> 4731
<8ea1f1a1> <8ea1f1fe> 4825
<8ea1f2a1> <8ea1f2fe> 4919
<8ea1f3a1> <8ea1f3fe> 5013
<8ea1f4a1> <8ea1f4fe> 5107
<8ea1f5a1> <8ea1f5fe> 5201
<8ea1f6a1> <8ea1f6fe> 5295
<8ea1f7a1> <8ea1f7fe> 5389
<8ea1f8a1> <8ea1f8fe> 5483
<8ea1f9a1> <8ea1f9fe> 5577
<8ea1faa1> <8ea1fafe> 5671
<8ea1fba1> <8ea1fbfe> 5765
<8ea1fca1> <8ea1fcfe> 5859
<8ea1fda1> <8ea1fdcb> 5953
<8ea2a1a1> <8ea2a1fe> 5996
<8ea2a2a1> <8ea2a2fe> 6090
<8ea2a3a1> <8ea2a3fe> 6184
<8ea2a4a1> <8ea2a4fe> 6278
<8ea2a5a1> <8ea2a5fe> 6372
<8ea2a6a1> <8ea2a6fe> 6466
<8ea2a7a1> <8ea2a7fe> 6560
<8ea2a8a1> <8ea2a8fe> 6654
<8ea2a9a1> <8ea2a9fe> 6748
<8ea2aaa1> <8ea2aafe> 6842
<8ea2aba1> <8ea2abfe> 6936
<8ea2aca1> <8ea2acfe> 7030
<8ea2ada1> <8ea2adfe> 7124
<8ea2aea1> <8ea2aefe> 7218
<8ea2afa1> <8ea2affe> 7312
<8ea2b0a1> <8ea2b0fe> 7406
<8ea2b1a1> <8ea2b1fe> 7500
<8ea2b2a1> <8ea2b2fe> 7594
<8ea2b3a1> <8ea2b3fe> 7688
<8ea2b4a1> <8ea2b4fe> 7782
endcidrange
100 begincidrange
<8ea2b5a1> <8ea2b5fe> 7876
<8ea2b6a1> <8ea2b6fe> 7970
<8ea2b7a1> <8ea2b7fe> 8064
<8ea2b8a1> <8ea2b8fe> 8158
<8ea2b9a1> <8ea2b9fe> 8252
<8ea2baa1> <8ea2bafe> 8346
<8ea2bba1> <8ea2bbfe> 8440
<8ea2bca1> <8ea2bcfe> 8534
<8ea2bda1> <8ea2bdfe> 8628
<8ea2bea1> <8ea2befe> 8722
<8ea2bfa1> <8ea2bffe> 8816
<8ea2c0a1> <8ea2c0fe> 8910
<8ea2c1a1> <8ea2c1fe> 9004
<8ea2c2a1> <8ea2c2fe> 9098
<8ea2c3a1> <8ea2c3fe> 9192
<8ea2c4a1> <8ea2c4fe> 9286
<8ea2c5a1> <8ea2c5fe> 9380
<8ea2c6a1> <8ea2c6fe> 9474
<8ea2c7a1> <8ea2c7fe> 9568
<8ea2c8a1> <8ea2c8fe> 9662
<8ea2c9a1> <8ea2c9fe> 9756
<8ea2caa1> <8ea2cafe> 9850
<8ea2cba1> <8ea2cbfe> 9944
<8ea2cca1> <8ea2ccfe> 10038
<8ea2cda1> <8ea2cdfe> 10132
<8ea2cea1> <8ea2cefe> 10226
<8ea2cfa1> <8ea2cffe> 10320
<8ea2d0a1> <8ea2d0fe> 10414
<8ea2d1a1> <8ea2d1fe> 10508
<8ea2d2a1> <8ea2d2fe> 10602
<8ea2d3a1> <8ea2d3fe> 10696
<8ea2d4a1> <8ea2d4fe> 10790
<8ea2d5a1> <8ea2d5fe> 10884
<8ea2d6a1> <8ea2d6fe> 10978
<8ea2d7a1> <8ea2d7fe> 11072
<8ea2d8a1> <8ea2d8fe> 11166
<8ea2d9a1> <8ea2d9fe> 11260
<8ea2daa1> <8ea2dafe> 11354
<8ea2dba1> <8ea2dbfe> 11448
<8ea2dca1> <8ea2dcfe> 11542
<8ea2dda1> <8ea2ddfe> 11636
<8ea2dea1> <8ea2defe> 11730
<8ea2dfa1> <8ea2dffe> 11824
<8ea2e0a1> <8ea2e0fe> 11918
<8ea2e1a1> <8ea2e1fe> 12012
<8ea2e2a1> <8ea2e2fe> 12106
<8ea2e3a1> <8ea2e3fe> 12200
<8ea2e4a1> <8ea2e4fe> 12294
<8ea2e5a1> <8ea2e5fe> 12388
<8ea2e6a1> <8ea2e6fe> 12482
<8ea2e7a1> <8ea2e7fe> 12576
<8ea2e8a1> <8ea2e8fe> 12670
<8ea2e9a1> <8ea2e9fe> 12764
<8ea2eaa1> <8ea2eafe> 12858
<8ea2eba1> <8ea2ebfe> 12952
<8ea2eca1> <8ea2ecfe> 13046
<8ea2eda1> <8ea2edfe> 13140
<8ea2eea1> <8ea2eefe> 13234
<8ea2efa1> <8ea2effe> 13328
<8ea2f0a1> <8ea2f0fe> 13422
<8ea2f1a1> <8ea2f1fe> 13516
<8ea2f2a1> <8ea2f2c4> 13610
<a1a1> <a1ab> 99
<a1ac> <a1ac> 13646
<a1ad> <a1ba> 111
<a1bb> <a1bb> 124
<a1bc> <a1bc> 126
<a1bd> <a1bd> 126
<a1be> <a1bf> 130
<a1c0> <a1c1> 130
<a1c2> <a1c3> 134
<a1c4> <a1c5> 134
<a1c6> <a1c7> 138
<a1c8> <a1c9> 138
<a1ca> <a1cb> 142
<a1cc> <a1cd> 142
<a1ce> <a1cf> 146
<a1d0> <a1d1> 146
<a1d2> <a1d3> 150
<a1d4> <a1d5> 150
<a1d6> <a1d7> 154
<a1d8> <a1d9> 154
<a1da> <a1db> 158
<a1dc> <a1fe> 158
<a2a1> <a2c3> 193
<a2c4> <a2c4> 13647
<a2c5> <a2fe> 229
<a3a1> <a3ce> 287
<a4a1> <a4fe> 333
<a5a1> <a5ec> 427
<a5ee> <a5f0> 503
<a6a1> <a6be> 506
<a7a1> <a7a1> 595
<a7a2> <a7a4> 536
<a7a5> <a7a5> 596
<a7a6> <a7a6> 539
<a7a7> <a7a7> 602
<a7a8> <a7a8> 540
<a7a9> <a7ac> 603
<a7ad> <a7af> 541
endcidrange
100 begincidrange
<a7b0> <a7b0> 607
<a7b1> <a7b1> 5998
<a7b2> <a7b2> 608
<a7b3> <a7b3> 610
<a7b4> <a7b4> 544
<a7b5> <a7b5> 611
<a7b6> <a7b6> 5999
<a7b7> <a7b7> 545
<a7b8> <a7b9> 612
<a7ba> <a7ba> 546
<a7bb> <a7bb> 6000
<a7bc> <a7bc> 547
<a7bd> <a7bd> 614
<a7be> <a7be> 633
<a7bf> <a7bf> 6005
<a7c0> <a7c1> 634
<a7c2> <a7c2> 548
<a7c3> <a7c6> 636
<a7c7> <a7c7> 549
<a7c8> <a7cb> 642
<a7cc> <a7cc> 6006
<a7cd> <a7cd> 646
<a7ce> <a7ce> 550
<a7cf> <a7d0> 648
<a7d1> <a7d2> 652
<a7d3> <a7d5> 551
<a7d6> <a7d8> 654
<a7d9> <a7da> 554
<a7db> <a7db> 6007
<a7dc> <a7df> 720
<a7e0> <a7e0> 725
<a7e1> <a7e1> 556
<a7e2> <a7e5> 726
<a7e6> <a7e6> 557
<a7e7> <a7ed> 730
<a7ee> <a7ee> 6026
<a7ef> <a7f2> 737
<a7f3> <a7f3> 6028
<a7f4> <a7f8> 741
<a7f9> <a7f9> 6029
<a7fa> <a7fd> 746
<a7fe> <a7fe> 854
<a8a1> <a8a6> 855
<a8a7> <a8a7> 862
<a8a8> <a8a8> 866
<a8a9> <a8aa> 558
<a8ab> <a8b2> 867
<a8b3> <a8b3> 6066
<a8b4> <a8b6> 875
<a8b7> <a8ba> 1014
<a8bb> <a8bb> 6162
<a8bc> <a8be> 1018
<a8bf> <a8c3> 1022
<a8c4> <a8cc> 1029
<a8cd> <a8cd> 6163
<a8ce> <a8ce> 6168
<a8cf> <a8d2> 1039
<a8d3> <a8d3> 6169
<a8d4> <a8d9> 1288
<a8da> <a8da> 6375
<a8db> <a8e2> 1294
<a8e3> <a8e3> 560
<a8e4> <a8e4> 1307
<a8e5> <a8e7> 1312
<a8e8> <a8eb> 1686
<a8ec> <a8ec> 561
<a8ed> <a8f0> 1695
<a8f1> <a8fb> 2086
<a8fc> <a8fe> 2549
<a9a1> <a9a1> 7731
<a9a2> <a9a2> 2552
<a9a3> <a9a3> 7732
<a9a4> <a9a5> 2553
<a9a6> <a9ab> 3041
<a9ac> <a9ae> 3515
<a9af> <a9af> 9056
<a9b0> <a9b0> 9746
<a9b1> <a9b3> 3963
<a9b4> <a9b5> 4352
<a9b6> <a9b6> 4745
<a9b7> <a9b8> 5042
<a9b9> <a9b9> 12045
<c2a1> <c2c1> 562
<c4a1> <c4fe> 595
<c5a1> <c5fe> 689
<c6a1> <c6fe> 783
<c7a1> <c7fe> 877
<c8a1> <c8fe> 971
<c9a1> <c9fe> 1065
<caa1> <cafe> 1159
<cba1> <cbfe> 1253
<cca1> <ccfe> 1347
<cda1> <cdfe> 1441
<cea1> <cefe> 1535
<cfa1> <cffe> 1629
<d0a1> <d0fe> 1723
<d1a1> <d1fe> 1817
<d2a1> <d2fe> 1911
<d3a1> <d3fe> 2005
<d4a1> <d4fe> 2099
endcidrange
41 begincidrange
<d5a1> <d5fe> 2193
<d6a1> <d6fe> 2287
<d7a1> <d7fe> 2381
<d8a1> <d8fe> 2475
<d9a1> <d9fe> 2569
<daa1> <dafe> 2663
<dba1> <dbfe> 2757
<dca1> <dcfe> 2851
<dda1> <ddfe> 2945
<dea1> <defe> 3039
<dfa1> <dffe> 3133
<e0a1> <e0fe> 3227
<e1a1> <e1fe> 3321
<e2a1> <e2fe> 3415
<e3a1> <e3fe> 3509
<e4a1> <e4fe> 3603
<e5a1> <e5fe> 3697
<e6a1> <e6fe> 3791
<e7a1> <e7fe> 3885
<e8a1> <e8fe> 3979
<e9a1> <e9fe> 4073
<eaa1> <eafe> 4167
<eba1> <ebfe> 4261
<eca1> <ecfe> 4355
<eda1> <edfe> 4449
<eea1> <eefe> 4543
<efa1> <effe> 4637
<f0a1> <f0fe> 4731
<f1a1> <f1fe> 4825
<f2a1> <f2fe> 4919
<f3a1> <f3fe> 5013
<f4a1> <f4fe> 5107
<f5a1> <f5fe> 5201
<f6a1> <f6fe> 5295
<f7a1> <f7fe> 5389
<f8a1> <f8fe> 5483
<f9a1> <f9fe> 5577
<faa1> <fafe> 5671
<fba1> <fbfe> 5765
<fca1> <fcfe> 5859
<fda1> <fdcb> 5953
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,58 @@
package org.apache.fontbox.cmap;
public class CodespaceRange {
private byte[] start;
private byte[] end;
private int startInt;
private int endInt;
private int codeLength = 0;
public int getCodeLength() {
return this.codeLength;
}
public byte[] getEnd() {
return this.end;
}
void setEnd(byte[] endBytes) {
this.end = endBytes;
this.endInt = toInt(endBytes, endBytes.length);
}
public byte[] getStart() {
return this.start;
}
void setStart(byte[] startBytes) {
this.start = startBytes;
this.codeLength = this.start.length;
this.startInt = toInt(startBytes, startBytes.length);
}
public boolean matches(byte[] code) {
return isFullMatch(code, code.length);
}
private int toInt(byte[] data, int dataLen) {
int code = 0;
for (int i = 0; i < dataLen; i++) {
code <<= 8;
code |= (data[i] + 256) % 256;
}
return code;
}
public boolean isFullMatch(byte[] code, int codeLen) {
if (codeLen == this.codeLength) {
int value = toInt(code, codeLen);
if (value >= this.startInt && value <= this.endInt)
return true;
}
return false;
}
}

View file

@ -0,0 +1,343 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (ETen-B5-H)
%%Title: (ETen-B5-H Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /ETen-B5-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 200 def
/XUID [1 10 25390] def
/WMode 0 def
2 begincodespacerange
<00> <80>
<A140> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 13648
endnotdefrange
100 begincidrange
<20> <7e> 13648
<a140> <a158> 99
<a159> <a15c> 13743
<a15d> <a17e> 128
<a1a1> <a1f5> 162
<a1f6> <a1f6> 248
<a1f7> <a1f7> 247
<a1f8> <a1fe> 249
<a240> <a27e> 256
<a2a1> <a2fe> 319
<a340> <a37e> 413
<a3a1> <a3bb> 476
<a3bd> <a3bf> 503
<a440> <a47e> 595
<a4a1> <a4fe> 658
<a540> <a57e> 752
<a5a1> <a5fe> 815
<a640> <a67e> 909
<a6a1> <a6fe> 972
<a740> <a77e> 1066
<a7a1> <a7fe> 1129
<a840> <a87e> 1223
<a8a1> <a8fe> 1286
<a940> <a97e> 1380
<a9a1> <a9fe> 1443
<aa40> <aa7e> 1537
<aaa1> <aafe> 1600
<ab40> <ab7e> 1694
<aba1> <abfe> 1757
<ac40> <ac7e> 1851
<aca1> <acfd> 1914
<acfe> <acfe> 2431
<ad40> <ad7e> 2007
<ada1> <adfe> 2070
<ae40> <ae7e> 2164
<aea1> <aefe> 2227
<af40> <af7e> 2321
<afa1> <afcf> 2384
<afd0> <affe> 2432
<b040> <b07e> 2479
<b0a1> <b0fe> 2542
<b140> <b17e> 2636
<b1a1> <b1fe> 2699
<b240> <b27e> 2793
<b2a1> <b2fe> 2856
<b340> <b37e> 2950
<b3a1> <b3fe> 3013
<b440> <b47e> 3107
<b4a1> <b4fe> 3170
<b540> <b57e> 3264
<b5a1> <b5fe> 3327
<b640> <b67e> 3421
<b6a1> <b6fe> 3484
<b740> <b77e> 3578
<b7a1> <b7fe> 3641
<b840> <b87e> 3735
<b8a1> <b8fe> 3798
<b940> <b97e> 3892
<b9a1> <b9fe> 3955
<ba40> <ba7e> 4049
<baa1> <bafe> 4112
<bb40> <bb7e> 4206
<bba1> <bbc7> 4269
<bbc8> <bbfe> 4309
<bc40> <bc7e> 4364
<bca1> <bcfe> 4427
<bd40> <bd7e> 4521
<bda1> <bdfe> 4584
<be40> <be51> 4678
<be52> <be52> 4308
<be53> <be7e> 4696
<bea1> <befe> 4740
<bf40> <bf7e> 4834
<bfa1> <bffe> 4897
<c040> <c07e> 4991
<c0a1> <c0fe> 5054
<c140> <c17e> 5148
<c1a1> <c1aa> 5211
<c1ab> <c1fe> 5222
<c240> <c27e> 5306
<c2a1> <c2ca> 5369
<c2cb> <c2cb> 5221
<c2cc> <c2fe> 5411
<c340> <c360> 5462
<c361> <c37e> 5496
<c3a1> <c3b8> 5526
<c3b9> <c3b9> 5551
<c3ba> <c3ba> 5550
<c3bb> <c3fe> 5552
<c440> <c455> 5620
<c456> <c456> 5495
<c457> <c47e> 5642
<c4a1> <c4fe> 5682
<c540> <c57e> 5776
<c5a1> <c5fe> 5839
<c640> <c67e> 5933
<c6a1> <c6be> 506
<c6bf> <c6d7> 537
<c6d8> <c6de> 13747
<c6df> <c6df> 6036
endcidrange
100 begincidrange
<c6e0> <c6fe> 13754
<c740> <c77e> 13785
<c7a1> <c7fe> 13848
<c840> <c87e> 13942
<c8a1> <c8d3> 14005
<c940> <c949> 5996
<c94a> <c94a> 628
<c94b> <c96b> 6006
<c96c> <c97e> 6040
<c9a1> <c9bd> 6059
<c9be> <c9be> 6039
<c9bf> <c9ec> 6088
<c9ed> <c9fe> 6135
<ca40> <ca7e> 6153
<caa1> <caf6> 6216
<caf7> <caf7> 6134
<caf8> <cafe> 6302
<cb40> <cb7e> 6309
<cba1> <cbfe> 6372
<cc40> <cc7e> 6466
<cca1> <ccfe> 6529
<cd40> <cd7e> 6623
<cda1> <cdfe> 6686
<ce40> <ce7e> 6780
<cea1> <cefe> 6843
<cf40> <cf7e> 6937
<cfa1> <cffe> 7000
<d040> <d07e> 7094
<d0a1> <d0fe> 7157
<d140> <d17e> 7251
<d1a1> <d1fe> 7314
<d240> <d27e> 7408
<d2a1> <d2fe> 7471
<d340> <d37e> 7565
<d3a1> <d3fe> 7628
<d440> <d47e> 7722
<d4a1> <d4fe> 7785
<d540> <d57e> 7879
<d5a1> <d5fe> 7942
<d640> <d67e> 8036
<d6a1> <d6cb> 8099
<d6cc> <d6cc> 8788
<d6cd> <d6fe> 8143
<d740> <d779> 8193
<d77a> <d77a> 8889
<d77b> <d77e> 8251
<d7a1> <d7fe> 8255
<d840> <d87e> 8349
<d8a1> <d8fe> 8412
<d940> <d97e> 8506
<d9a1> <d9fe> 8569
<da40> <da7e> 8663
<daa1> <dade> 8726
<dadf> <dadf> 8142
<dae0> <dafe> 8789
<db40> <db7e> 8820
<dba1> <dba6> 8883
<dba7> <dbfe> 8890
<dc40> <dc7e> 8978
<dca1> <dcfe> 9041
<dd40> <dd7e> 9135
<dda1> <ddfb> 9198
<ddfc> <ddfc> 9089
<ddfd> <ddfe> 9289
<de40> <de7e> 9291
<dea1> <defe> 9354
<df40> <df7e> 9448
<dfa1> <dffe> 9511
<e040> <e07e> 9605
<e0a1> <e0fe> 9668
<e140> <e17e> 9762
<e1a1> <e1fe> 9825
<e240> <e27e> 9919
<e2a1> <e2fe> 9982
<e340> <e37e> 10076
<e3a1> <e3fe> 10139
<e440> <e47e> 10233
<e4a1> <e4fe> 10296
<e540> <e57e> 10390
<e5a1> <e5fe> 10453
<e640> <e67e> 10547
<e6a1> <e6fe> 10610
<e740> <e77e> 10704
<e7a1> <e7fe> 10767
<e840> <e87e> 10861
<e8a1> <e8a2> 10924
<e8a3> <e8fe> 10927
<e940> <e975> 11019
<e976> <e97e> 11074
<e9a1> <e9fe> 11083
<ea40> <ea7e> 11177
<eaa1> <eafe> 11240
<eb40> <eb5a> 11334
<eb5b> <eb7e> 11362
<eba1> <ebf0> 11398
<ebf1> <ebf1> 10926
<ebf2> <ebfe> 11478
<ec40> <ec7e> 11491
<eca1> <ecdd> 11554
<ecde> <ecde> 11073
endcidrange
54 begincidrange
<ecdf> <ecfe> 11615
<ed40> <ed7e> 11647
<eda1> <eda9> 11710
<edaa> <edfe> 11720
<ee40> <ee7e> 11805
<eea1> <eeea> 11868
<eeeb> <eeeb> 12308
<eeec> <eefe> 11942
<ef40> <ef7e> 11961
<efa1> <effe> 12024
<f040> <f055> 12118
<f056> <f056> 11719
<f057> <f07e> 12140
<f0a1> <f0ca> 12180
<f0cb> <f0cb> 11361
<f0cc> <f0fe> 12222
<f140> <f162> 12273
<f163> <f16a> 12309
<f16b> <f16b> 12640
<f16c> <f17e> 12317
<f1a1> <f1fe> 12336
<f240> <f267> 12430
<f268> <f268> 12783
<f269> <f27e> 12470
<f2a1> <f2c2> 12492
<f2c3> <f2fe> 12527
<f340> <f374> 12587
<f375> <f37e> 12641
<f3a1> <f3fe> 12651
<f440> <f465> 12745
<f466> <f47e> 12784
<f4a1> <f4b4> 12809
<f4b5> <f4b5> 12526
<f4b6> <f4fc> 12829
<f4fd> <f4fe> 12901
<f540> <f57e> 12903
<f5a1> <f5fe> 12966
<f640> <f662> 13060
<f663> <f663> 12900
<f664> <f67e> 13095
<f6a1> <f6fe> 13122
<f740> <f77e> 13216
<f7a1> <f7fe> 13279
<f840> <f87e> 13373
<f8a1> <f8fe> 13436
<f940> <f976> 13530
<f977> <f97e> 13586
<f9a1> <f9c3> 13594
<f9c4> <f9c4> 13585
<f9c5> <f9c5> 13629
<f9c6> <f9c6> 13641
<f9c7> <f9d1> 13630
<f9d2> <f9d5> 13642
<f9d6> <f9fe> 14056
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,91 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (ETen-B5-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (ETen-B5-H)
%%BeginResource: CMap (ETen-B5-V)
%%Title: (ETen-B5-V Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/ETen-B5-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /ETen-B5-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 920 def
/XUID [1 10 25391] def
/WMode 1 def
13 begincidrange
<a14b> <a14b> 13646
<a15a> <a15a> 13743
<a15c> <a15c> 13745
<a15d> <a15e> 130
<a161> <a162> 134
<a165> <a166> 138
<a169> <a16a> 142
<a16d> <a16e> 146
<a171> <a172> 150
<a175> <a176> 154
<a179> <a17a> 158
<a1e3> <a1e3> 13647
<c6e4> <c6e5> 14097
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,79 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (ETen-B5-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (ETen-B5-H)
%%BeginResource: CMap (ETenms-B5-H)
%%Title: (ETenms-B5-H Adobe CNS1 0)
%%Version: 10.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/ETen-B5-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /ETenms-B5-H def
/CMapVersion 10.002 def
/CMapType 1 def
/XUID [1 10 25596] def
/WMode 0 def
1 begincidrange
<20> <7e> 1
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,99 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (ETenms-B5-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (ETenms-B5-H)
%%BeginResource: CMap (ETenms-B5-V)
%%Title: (ETenms-B5-V Adobe CNS1 0)
%%Version: 10.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/ETenms-B5-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /ETenms-B5-V def
/CMapVersion 10.002 def
/CMapType 1 def
/XUID [1 10 25597] def
/WMode 1 def
6 begincidchar
<a14b> 13646
<a14c> 109
<a156> 312
<a158> 122
<a15a> 13743
<a15c> 13745
endcidchar
12 begincidrange
<a15d> <a15e> 130
<a161> <a162> 134
<a165> <a166> 138
<a169> <a16a> 142
<a16d> <a16e> 146
<a171> <a172> 150
<a175> <a176> 154
<a179> <a17a> 158
<a17d> <a17e> 130
<a1a1> <a1a2> 134
<a1a3> <a1a4> 138
<c6e4> <c6e5> 14097
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,207 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (EUC-H)
%%Title: (EUC-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /EUC-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 680 def
/XUID [1 10 25329] def
/WMode 0 def
3 begincodespacerange
<00> <80>
<8EA0> <8EDF>
<A1A1> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 231
endnotdefrange
100 begincidrange
<20> <7e> 231
<8ea0> <8edf> 326
<a1a1> <a1fe> 633
<a2a1> <a2ae> 727
<a2ba> <a2c1> 741
<a2ca> <a2d0> 749
<a2dc> <a2ea> 756
<a2f2> <a2f9> 771
<a2fe> <a2fe> 779
<a3b0> <a3b9> 780
<a3c1> <a3da> 790
<a3e1> <a3fa> 816
<a4a1> <a4f3> 842
<a5a1> <a5f6> 925
<a6a1> <a6b8> 1011
<a6c1> <a6d8> 1035
<a7a1> <a7c1> 1059
<a7d1> <a7f1> 1092
<a8a1> <a8a1> 7479
<a8a2> <a8a2> 7481
<a8a3> <a8a3> 7491
<a8a4> <a8a4> 7495
<a8a5> <a8a5> 7503
<a8a6> <a8a6> 7499
<a8a7> <a8a7> 7507
<a8a8> <a8a8> 7523
<a8a9> <a8a9> 7515
<a8aa> <a8aa> 7531
<a8ab> <a8ab> 7539
<a8ac> <a8ac> 7480
<a8ad> <a8ad> 7482
<a8ae> <a8ae> 7494
<a8af> <a8af> 7498
<a8b0> <a8b0> 7506
<a8b1> <a8b1> 7502
<a8b2> <a8b2> 7514
<a8b3> <a8b3> 7530
<a8b4> <a8b4> 7522
<a8b5> <a8b5> 7538
<a8b6> <a8b6> 7554
<a8b7> <a8b7> 7511
<a8b8> <a8b8> 7526
<a8b9> <a8b9> 7519
<a8ba> <a8ba> 7534
<a8bb> <a8bb> 7542
<a8bc> <a8bc> 7508
<a8bd> <a8bd> 7527
<a8be> <a8be> 7516
<a8bf> <a8bf> 7535
<a8c0> <a8c0> 7545
<b0a1> <b0fe> 1125
<b1a1> <b1fe> 1219
<b2a1> <b2fe> 1313
<b3a1> <b3fe> 1407
<b4a1> <b4fe> 1501
<b5a1> <b5fe> 1595
<b6a1> <b6fe> 1689
<b7a1> <b7fe> 1783
<b8a1> <b8fe> 1877
<b9a1> <b9fe> 1971
<baa1> <bafe> 2065
<bba1> <bbfe> 2159
<bca1> <bcfe> 2253
<bda1> <bdfe> 2347
<bea1> <befe> 2441
<bfa1> <bffe> 2535
<c0a1> <c0fe> 2629
<c1a1> <c1fe> 2723
<c2a1> <c2fe> 2817
<c3a1> <c3fe> 2911
<c4a1> <c4fe> 3005
<c5a1> <c5fe> 3099
<c6a1> <c6fe> 3193
<c7a1> <c7fe> 3287
<c8a1> <c8fe> 3381
<c9a1> <c9fe> 3475
<caa1> <cafe> 3569
<cba1> <cbfe> 3663
<cca1> <ccfe> 3757
<cda1> <cdfe> 3851
<cea1> <cefe> 3945
<cfa1> <cfd3> 4039
<d0a1> <d0fe> 4090
<d1a1> <d1fe> 4184
<d2a1> <d2fe> 4278
<d3a1> <d3fe> 4372
<d4a1> <d4fe> 4466
<d5a1> <d5fe> 4560
<d6a1> <d6fe> 4654
<d7a1> <d7fe> 4748
<d8a1> <d8fe> 4842
<d9a1> <d9fe> 4936
<daa1> <dafe> 5030
<dba1> <dbfe> 5124
<dca1> <dcfe> 5218
<dda1> <ddfe> 5312
<dea1> <defe> 5406
<dfa1> <dffe> 5500
<e0a1> <e0fe> 5594
<e1a1> <e1fe> 5688
endcidrange
20 begincidrange
<e2a1> <e2fe> 5782
<e3a1> <e3fe> 5876
<e4a1> <e4fe> 5970
<e5a1> <e5fe> 6064
<e6a1> <e6fe> 6158
<e7a1> <e7fe> 6252
<e8a1> <e8fe> 6346
<e9a1> <e9fe> 6440
<eaa1> <eafe> 6534
<eba1> <ebfe> 6628
<eca1> <ecfe> 6722
<eda1> <edfe> 6816
<eea1> <eefe> 6910
<efa1> <effe> 7004
<f0a1> <f0fe> 7098
<f1a1> <f1fe> 7192
<f2a1> <f2fe> 7286
<f3a1> <f3fe> 7380
<f4a1> <f4a4> 7474
<f4a5> <f4a6> 8284
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,105 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (EUC-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (EUC-H)
%%BeginResource: CMap (EUC-V)
%%Title: (EUC-V Adobe Japan1 1)
%%Version: 12.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/EUC-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /EUC-V def
/CMapVersion 12.002 def
/CMapType 1 def
/UIDOffset 800 def
/XUID [1 10 25330] def
/WMode 1 def
27 begincidrange
<a1a2> <a1a3> 7887
<a1b1> <a1b2> 7889
<a1bc> <a1be> 7891
<a1c1> <a1c5> 7894
<a1ca> <a1db> 7899
<a1e1> <a1e1> 7917
<a4a1> <a4a1> 7918
<a4a3> <a4a3> 7919
<a4a5> <a4a5> 7920
<a4a7> <a4a7> 7921
<a4a9> <a4a9> 7922
<a4c3> <a4c3> 7923
<a4e3> <a4e3> 7924
<a4e5> <a4e5> 7925
<a4e7> <a4e7> 7926
<a4ee> <a4ee> 7927
<a5a1> <a5a1> 7928
<a5a3> <a5a3> 7929
<a5a5> <a5a5> 7930
<a5a7> <a5a7> 7931
<a5a9> <a5a9> 7932
<a5c3> <a5c3> 7933
<a5e3> <a5e3> 7934
<a5e5> <a5e5> 7935
<a5e7> <a5e7> 7936
<a5ee> <a5ee> 7937
<a5f5> <a5f6> 7938
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

Some files were not shown because too many files have changed in this diff Show more