diff options
author | fotis <fotis@unknown> | 2000-11-02 12:48:33 +0000 |
---|---|---|
committer | fotis <fotis@unknown> | 2000-11-02 12:48:33 +0000 |
commit | d781b5bb875bd8f73bfb9e97ed40d55a3c642e31 (patch) | |
tree | 3565df0d1f399b2eec075c4216f848fea938a72d /src/org/apache/fop/pdf/PDFEncoding.java | |
parent | bacbe7a0915fbb7b4c22b623f97a11352cf5d0b1 (diff) | |
download | xmlgraphics-fop-d781b5bb875bd8f73bfb9e97ed40d55a3c642e31.tar.gz xmlgraphics-fop-d781b5bb875bd8f73bfb9e97ed40d55a3c642e31.zip |
adds support for type 1 fonts by Jeremias Maerki <jeremias.maerki@outline.ch>
based on work by Alain Fagot
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193740 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/org/apache/fop/pdf/PDFEncoding.java')
-rw-r--r-- | src/org/apache/fop/pdf/PDFEncoding.java | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/org/apache/fop/pdf/PDFEncoding.java b/src/org/apache/fop/pdf/PDFEncoding.java new file mode 100644 index 000000000..f5ed80a47 --- /dev/null +++ b/src/org/apache/fop/pdf/PDFEncoding.java @@ -0,0 +1,152 @@ +/*-- $Id$ -- + + ============================================================================ + The Apache Software License, Version 1.1 + ============================================================================ + + Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without modifica- + tion, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. The end-user documentation included with the redistribution, if any, must + include the following acknowledgment: "This product includes software + developed by the Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, if + and wherever such third-party acknowledgments normally appear. + + 4. The names "Fop" and "Apache Software Foundation" must not be used to + endorse or promote products derived from this software without prior + written permission. For written permission, please contact + apache@apache.org. + + 5. Products derived from this software may not be called "Apache", nor may + "Apache" appear in their name, without prior written permission of the + Apache Software Foundation. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This software consists of voluntary contributions made by many individuals + on behalf of the Apache Software Foundation and was originally created by + James Tauber <jtauber@jtauber.com>. For more information on the Apache + Software Foundation, please see <http://www.apache.org/>. + + */ +package org.apache.fop.pdf; + +// Java +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +/** + * class representing an /Encoding object. + * + * A small object expressing the base encoding name and + * the differences from the base encoding. + * + * The three base encodings are given by their name. + * + * Encodings are specified on page 213 and onwards of the PDF 1.3 spec. + */ +public class PDFEncoding extends PDFObject { + + /** the name for the standard encoding scheme */ + public static final String MacRomanEncoding = "MacRomanEncoding"; + /** the name for the standard encoding scheme */ + public static final String MacExpertEncoding = "MacExpertEncoding"; + /** the name for the standard encoding scheme */ + public static final String WinAnsiEncoding = "WinAnsiEncoding"; + + /** + * the name for the base encoding. + * One of the three base encoding scheme names or + * the default font's base encoding if null. + */ + protected String basename; + + /** the differences from the base encoding */ + protected Hashtable differences; + + /** + * create the /Encoding object + * + * @param number the object's number + * @param basename the name of the character encoding schema + */ + public PDFEncoding(int number, String basename) { + + /* generic creation of PDF object */ + super(number); + + /* set fields using paramaters */ + this.basename = basename; + this.differences = new Hashtable(); + } + + /** + * add differences to the encoding + * + * @param code the first index of the sequence to be changed + * @param sequence the sequence of glyph names (as String) + */ + public void addDifferences(int code, Vector sequence) { + differences.put(new Integer(code), sequence); + } + + /** + * produce the PDF representation for the object + * + * @return the PDF + */ + public String toPDF() { + StringBuffer p = new StringBuffer(); + p.append(this.number + " " + this.generation + + " obj\n<< /Type /Encoding"); + if ((basename != null) && (!basename.equals(""))) { + p.append("\n/BaseEncoding /" + this.basename); + } + if (!differences.isEmpty()) { + p.append("\n/Differences [ "); + Object code; + Enumeration codes = differences.keys(); + while (codes.hasMoreElements()) { + code = codes.nextElement(); + p.append(" "); p.append(code); + Vector sequence = (Vector)differences.get(code); + for (int i = 0; i < sequence.size(); i++) { + p.append(" /"); p.append((String)sequence.elementAt(i)); + } + } + p.append(" ]"); + } + p.append(" >>\nendobj\n"); + return p.toString(); + } + /* example (p. 214) + 25 0 obj + << + /Type /Encoding + /Differences [39 /quotesingle 96 /grave 128 + /Adieresis /Aring /Ccedilla /Eacute /Ntilde + /Odieresis /Udieresis /aacute /agrave] + >> + endobj + */ +} |