You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/07/07 21:24:51 UTC

svn commit: r1751834 - in /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDType1Font.java encoding/ZapfDingbatsEncoding.java

Author: tilman
Date: Thu Jul  7 21:24:51 2016
New Revision: 1751834

URL: http://svn.apache.org/viewvc?rev=1751834&view=rev
Log:
PDFBOX-3298: added encoding for ZapfDingbats

Added:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java   (with props)
Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1751834&r1=1751833&r2=1751834&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Thu Jul  7 21:24:51 2016
@@ -47,6 +47,7 @@ import org.apache.pdfbox.util.Matrix;
 
 import static org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint;
 import org.apache.pdfbox.pdmodel.font.encoding.WinAnsiEncoding;
+import org.apache.pdfbox.pdmodel.font.encoding.ZapfDingbatsEncoding;
 
 /**
  * A PostScript Type 1 Font.
@@ -121,8 +122,16 @@ public class PDType1Font extends PDSimpl
         
         dict.setItem(COSName.SUBTYPE, COSName.TYPE1);
         dict.setName(COSName.BASE_FONT, baseFont);
-        encoding = WinAnsiEncoding.INSTANCE;
-        dict.setItem(COSName.ENCODING, COSName.WIN_ANSI_ENCODING);
+        if ("ZapfDingbats".equals(baseFont))
+        {
+            encoding = ZapfDingbatsEncoding.INSTANCE;
+        }
+        else
+        {
+            encoding = WinAnsiEncoding.INSTANCE;
+            dict.setItem(COSName.ENCODING, COSName.WIN_ANSI_ENCODING);
+        }
+
         // standard 14 fonts may be accessed concurrently, as they are singletons
         codeToBytesMap = new ConcurrentHashMap<Integer,byte[]>();
 

Added: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java?rev=1751834&view=auto
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java (added)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java Thu Jul  7 21:24:51 2016
@@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.font.encoding;
+
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSName;
+
+/**
+ * This is an interface to a text encoder.
+ */
+public class ZapfDingbatsEncoding extends Encoding
+{
+
+    private static final int CHAR_CODE = 0;
+    private static final int CHAR_NAME = 1;
+    
+    /**
+     * Table of octal character codes and their corresponding names.
+     */
+    private static final Object[][] ZAPFDINGBATS_ENCODING_TABLE = {
+        {040, "space"},
+        {041, "a1"},
+        {042, "a2"},
+        {043, "a202"},
+        {044, "a3"},
+        {045, "a4"},
+        {046, "a5"},
+        {047, "a119"},
+        {050, "a118"},
+        {051, "a117"},
+        {052, "a11"},
+        {053, "a12"},
+        {054, "a13"},
+        {055, "a14"},
+        {056, "a15"},
+        {057, "a16"},
+        {060, "a105"},
+        {061, "a17"},
+        {062, "a18"},
+        {063, "a19"},
+        {064, "a20"},
+        {065, "a21"},
+        {066, "a22"},
+        {067, "a23"},
+        {070, "a24"},
+        {071, "a25"},
+        {072, "a26"},
+        {073, "a27"},
+        {074, "a28"},
+        {075, "a6"},
+        {076, "a7"},
+        {077, "a8"},
+        {0100, "a9"},
+        {0101, "a10"},
+        {0102, "a29"},
+        {0103, "a30"},
+        {0104, "a31"},
+        {0105, "a32"},
+        {0106, "a33"},
+        {0107, "a34"},
+        {0110, "a35"},
+        {0111, "a36"},
+        {0112, "a37"},
+        {0113, "a38"},
+        {0114, "a39"},
+        {0115, "a40"},
+        {0116, "a41"},
+        {0117, "a42"},
+        {0120, "a43"},
+        {0121, "a44"},
+        {0122, "a45"},
+        {0123, "a46"},
+        {0124, "a47"},
+        {0125, "a48"},
+        {0126, "a49"},
+        {0127, "a50"},
+        {0130, "a51"},
+        {0131, "a52"},
+        {0132, "a53"},
+        {0133, "a54"},
+        {0134, "a55"},
+        {0135, "a56"},
+        {0136, "a57"},
+        {0137, "a58"},
+        {0140, "a59"},
+        {0141, "a60"},
+        {0142, "a61"},
+        {0143, "a62"},
+        {0144, "a63"},
+        {0145, "a64"},
+        {0146, "a65"},
+        {0147, "a66"},
+        {0150, "a67"},
+        {0151, "a68"},
+        {0152, "a69"},
+        {0153, "a70"},
+        {0154, "a71"},
+        {0155, "a72"},
+        {0156, "a73"},
+        {0157, "a74"},
+        {0160, "a203"},
+        {0161, "a75"},
+        {0162, "a204"},
+        {0163, "a76"},
+        {0164, "a77"},
+        {0165, "a78"},
+        {0166, "a79"},
+        {0167, "a81"},
+        {0170, "a82"},
+        {0171, "a83"},
+        {0172, "a84"},
+        {0173, "a97"},
+        {0174, "a98"},
+        {0175, "a99"},
+        {0176, "a100"},
+        {0241, "a101"},
+        {0242, "a102"},
+        {0243, "a103"},
+        {0244, "a104"},
+        {0245, "a106"},
+        {0246, "a107"},
+        {0247, "a108"},
+        {0250, "a112"},
+        {0251, "a111"},
+        {0252, "a110"},
+        {0253, "a109"},
+        {0254, "a120"},
+        {0255, "a121"},
+        {0256, "a122"},
+        {0257, "a123"},
+        {0260, "a124"},
+        {0261, "a125"},
+        {0262, "a126"},
+        {0263, "a127"},
+        {0264, "a128"},
+        {0265, "a129"},
+        {0266, "a130"},
+        {0267, "a131"},
+        {0270, "a132"},
+        {0271, "a133"},
+        {0272, "a134"},
+        {0273, "a135"},
+        {0274, "a136"},
+        {0275, "a137"},
+        {0276, "a138"},
+        {0277, "a139"},
+        {0300, "a140"},
+        {0301, "a141"},
+        {0302, "a142"},
+        {0303, "a143"},
+        {0304, "a144"},
+        {0305, "a145"},
+        {0306, "a146"},
+        {0307, "a147"},
+        {0310, "a148"},
+        {0311, "a149"},
+        {0312, "a150"},
+        {0313, "a151"},
+        {0314, "a152"},
+        {0315, "a153"},
+        {0316, "a154"},
+        {0317, "a155"},
+        {0320, "a156"},
+        {0321, "a157"},
+        {0322, "a158"},
+        {0323, "a159"},
+        {0324, "a160"},
+        {0325, "a161"},
+        {0326, "a163"},
+        {0327, "a164"},
+        {0330, "a196"},
+        {0331, "a165"},
+        {0332, "a192"},
+        {0333, "a166"},
+        {0334, "a167"},
+        {0335, "a168"},
+        {0336, "a169"},
+        {0337, "a170"},
+        {0340, "a171"},
+        {0341, "a172"},
+        {0342, "a173"},
+        {0343, "a162"},
+        {0344, "a174"},
+        {0345, "a175"},
+        {0346, "a176"},
+        {0347, "a177"},
+        {0350, "a178"},
+        {0351, "a179"},
+        {0352, "a193"},
+        {0353, "a180"},
+        {0354, "a199"},
+        {0355, "a181"},
+        {0356, "a200"},
+        {0357, "a182"},
+        {0361, "a201"},
+        {0362, "a183"},
+        {0363, "a184"},
+        {0364, "a197"},
+        {0365, "a185"},
+        {0366, "a194"},
+        {0367, "a198"},
+        {0370, "a186"},
+        {0371, "a195"},
+        {0372, "a187"},
+        {0373, "a188"},
+        {0374, "a189"},
+        {0375, "a190"},
+        {0376, "a191"}
+    };
+    
+    /**
+     * Singleton instance of this class.
+     */
+    public static final ZapfDingbatsEncoding INSTANCE = new ZapfDingbatsEncoding();
+
+    /**
+     * Constructor.
+     */
+    public ZapfDingbatsEncoding()
+    {
+        for (Object[] encodingEntry : ZAPFDINGBATS_ENCODING_TABLE)
+        {
+            add((Integer) encodingEntry[CHAR_CODE], encodingEntry[CHAR_NAME].toString());
+        }
+    }
+    
+    @Override
+    public COSBase getCOSObject()
+    {
+        return COSName.getPDFName("ZapfDingbatsEncoding");
+    }
+
+    @Override
+    public String getEncodingName()
+    {
+        return "ZapfDingbatsEncoding";
+    }
+}

Propchange: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/ZapfDingbatsEncoding.java
------------------------------------------------------------------------------
    svn:eol-style = native