You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2015/09/21 21:56:12 UTC

svn commit: r1704411 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java

Author: msahyoun
Date: Mon Sep 21 19:56:11 2015
New Revision: 1704411

URL: http://svn.apache.org/viewvc?rev=1704411&view=rev
Log:
PDFBOX-2852: declare encoding in static table

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java?rev=1704411&r1=1704410&r2=1704411&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/WinAnsiEncoding.java Mon Sep 21 19:56:11 2015
@@ -27,6 +27,234 @@ import org.apache.pdfbox.cos.COSName;
 public class WinAnsiEncoding 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.
+     */
+    public static final Object[][] WIN_ANSI_ENCODING_TABLE = {
+            {0101, "A"},
+            {0306, "AE"},
+            {0301, "Aacute"},
+            {0302, "Acircumflex"},
+            {0304, "Adieresis"},
+            {0300, "Agrave"},
+            {0305, "Aring"},
+            {0303, "Atilde"},
+            {0102, "B"},
+            {0103, "C"},
+            {0307, "Ccedilla"},
+            {0104, "D"},
+            {0105, "E"},
+            {0311, "Eacute"},
+            {0312, "Ecircumflex"},
+            {0313, "Edieresis"},
+            {0310, "Egrave"},
+            {0320, "Eth"},
+            {0200, "Euro"},
+            {0106, "F"},
+            {0107, "G"},
+            {0110, "H"},
+            {0111, "I"},
+            {0315, "Iacute"},
+            {0316, "Icircumflex"},
+            {0317, "Idieresis"},
+            {0314, "Igrave"},
+            {0112, "J"},
+            {0113, "K"},
+            {0114, "L"},
+            {0115, "M"},
+            {0116, "N"},
+            {0321, "Ntilde"},
+            {0117, "O"},
+            {0214, "OE"},
+            {0323, "Oacute"},
+            {0324, "Ocircumflex"},
+            {0326, "Odieresis"},
+            {0322, "Ograve"},
+            {0330, "Oslash"},
+            {0325, "Otilde"},
+            {0120, "P"},
+            {0121, "Q"},
+            {0122, "R"},
+            {0123, "S"},
+            {0212, "Scaron"},
+            {0124, "T"},
+            {0336, "Thorn"},
+            {0125, "U"},
+            {0332, "Uacute"},
+            {0333, "Ucircumflex"},
+            {0334, "Udieresis"},
+            {0331, "Ugrave"},
+            {0126, "V"},
+            {0127, "W"},
+            {0130, "X"},
+            {0131, "Y"},
+            {0335, "Yacute"},
+            {0237, "Ydieresis"},
+            {0132, "Z"},
+            {0216, "Zcaron"},
+            {0141, "a"},
+            {0341, "aacute"},
+            {0342, "acircumflex"},
+            {0264, "acute"},
+            {0344, "adieresis"},
+            {0346, "ae"},
+            {0340, "agrave"},
+            {046, "ampersand"},
+            {0345, "aring"},
+            {0136, "asciicircum"},
+            {0176, "asciitilde"},
+            {052, "asterisk"},
+            {0100, "at"},
+            {0343, "atilde"},
+            {0142, "b"},
+            {0134, "backslash"},
+            {0174, "bar"},
+            {0173, "braceleft"},
+            {0175, "braceright"},
+            {0133, "bracketleft"},
+            {0135, "bracketright"},
+            {0246, "brokenbar"},
+            {0225, "bullet"},
+            {0143, "c"},
+            {0347, "ccedilla"},
+            {0270, "cedilla"},
+            {0242, "cent"},
+            {0210, "circumflex"},
+            {072, "colon"},
+            {054, "comma"},
+            {0251, "copyright"},
+            {0244, "currency"},
+            {0144, "d"},
+            {0206, "dagger"},
+            {0207, "daggerdbl"},
+            {0260, "degree"},
+            {0250, "dieresis"},
+            {0367, "divide"},
+            {044, "dollar"},
+            {0145, "e"},
+            {0351, "eacute"},
+            {0352, "ecircumflex"},
+            {0353, "edieresis"},
+            {0350, "egrave"},
+            {070, "eight"},
+            {0205, "ellipsis"},
+            {0227, "emdash"},
+            {0226, "endash"},
+            {075, "equal"},
+            {0360, "eth"},
+            {041, "exclam"},
+            {0241, "exclamdown"},
+            {0146, "f"},
+            {065, "five"},
+            {0203, "florin"},
+            {064, "four"},
+            {0147, "g"},
+            {0337, "germandbls"},
+            {0140, "grave"},
+            {076, "greater"},
+            {0253, "guillemotleft"},
+            {0273, "guillemotright"},
+            {0213, "guilsinglleft"},
+            {0233, "guilsinglright"},
+            {0150, "h"},
+            {055, "hyphen"},
+            {0151, "i"},
+            {0355, "iacute"},
+            {0356, "icircumflex"},
+            {0357, "idieresis"},
+            {0354, "igrave"},
+            {0152, "j"},
+            {0153, "k"},
+            {0154, "l"},
+            {074, "less"},
+            {0254, "logicalnot"},
+            {0155, "m"},
+            {0257, "macron"},
+            {0265, "mu"},
+            {0327, "multiply"},
+            {0156, "n"},
+            {071, "nine"},
+            {0361, "ntilde"},
+            {043, "numbersign"},
+            {0157, "o"},
+            {0363, "oacute"},
+            {0364, "ocircumflex"},
+            {0366, "odieresis"},
+            {0234, "oe"},
+            {0362, "ograve"},
+            {061, "one"},
+            {0275, "onehalf"},
+            {0274, "onequarter"},
+            {0271, "onesuperior"},
+            {0252, "ordfeminine"},
+            {0272, "ordmasculine"},
+            {0370, "oslash"},
+            {0365, "otilde"},
+            {0160, "p"},
+            {0266, "paragraph"},
+            {050, "parenleft"},
+            {051, "parenright"},
+            {045, "percent"},
+            {056, "period"},
+            {0267, "periodcentered"},
+            {0211, "perthousand"},
+            {053, "plus"},
+            {0261, "plusminus"},
+            {0161, "q"},
+            {077, "question"},
+            {0277, "questiondown"},
+            {042, "quotedbl"},
+            {0204, "quotedblbase"},
+            {0223, "quotedblleft"},
+            {0224, "quotedblright"},
+            {0221, "quoteleft"},
+            {0222, "quoteright"},
+            {0202, "quotesinglbase"},
+            {047, "quotesingle"},
+            {0162, "r"},
+            {0256, "registered"},
+            {0163, "s"},
+            {0232, "scaron"},
+            {0247, "section"},
+            {073, "semicolon"},
+            {067, "seven"},
+            {066, "six"},
+            {057, "slash"},
+            {040, "space"},
+            {0243, "sterling"},
+            {0164, "t"},
+            {0376, "thorn"},
+            {063, "three"},
+            {0276, "threequarters"},
+            {0263, "threesuperior"},
+            {0230, "tilde"},
+            {0231, "trademark"},
+            {062, "two"},
+            {0262, "twosuperior"},
+            {0165, "u"},
+            {0372, "uacute"},
+            {0373, "ucircumflex"},
+            {0374, "udieresis"},
+            {0371, "ugrave"},
+            {0137, "underscore"},
+            {0166, "v"},
+            {0167, "w"},
+            {0170, "x"},
+            {0171, "y"},
+            {0375, "yacute"},
+            {0377, "ydieresis"},
+            {0245, "yen"},
+            {0172, "z"},
+            {0236, "zcaron"},
+            {060, "zero"},
+            // adding some additional mappings as defined in Appendix D of the pdf spec
+            {0240, "space"},
+            {0255, "hyphen"}
+    };
+
     /**
      * Singleton instance of this class.
      * 
@@ -39,225 +267,11 @@ public class WinAnsiEncoding extends Enc
      */
     public WinAnsiEncoding()
     {
-        add(0101, "A");
-        add(0306, "AE");
-        add(0301, "Aacute");
-        add(0302, "Acircumflex");
-        add(0304, "Adieresis");
-        add(0300, "Agrave");
-        add(0305, "Aring");
-        add(0303, "Atilde");
-        add(0102, "B");
-        add(0103, "C");
-        add(0307, "Ccedilla");
-        add(0104, "D");
-        add(0105, "E");
-        add(0311, "Eacute");
-        add(0312, "Ecircumflex");
-        add(0313, "Edieresis");
-        add(0310, "Egrave");
-        add(0320, "Eth");
-        add(0200, "Euro");
-        add(0106, "F");
-        add(0107, "G");
-        add(0110, "H");
-        add(0111, "I");
-        add(0315, "Iacute");
-        add(0316, "Icircumflex");
-        add(0317, "Idieresis");
-        add(0314, "Igrave");
-        add(0112, "J");
-        add(0113, "K");
-        add(0114, "L");
-        add(0115, "M");
-        add(0116, "N");
-        add(0321, "Ntilde");
-        add(0117, "O");
-        add(0214, "OE");
-        add(0323, "Oacute");
-        add(0324, "Ocircumflex");
-        add(0326, "Odieresis");
-        add(0322, "Ograve");
-        add(0330, "Oslash");
-        add(0325, "Otilde");
-        add(0120, "P");
-        add(0121, "Q");
-        add(0122, "R");
-        add(0123, "S");
-        add(0212, "Scaron");
-        add(0124, "T");
-        add(0336, "Thorn");
-        add(0125, "U");
-        add(0332, "Uacute");
-        add(0333, "Ucircumflex");
-        add(0334, "Udieresis");
-        add(0331, "Ugrave");
-        add(0126, "V");
-        add(0127, "W");
-        add(0130, "X");
-        add(0131, "Y");
-        add(0335, "Yacute");
-        add(0237, "Ydieresis");
-        add(0132, "Z");
-        add(0216, "Zcaron");
-        add(0141, "a");
-        add(0341, "aacute");
-        add(0342, "acircumflex");
-        add(0264, "acute");
-        add(0344, "adieresis");
-        add(0346, "ae");
-        add(0340, "agrave");
-        add(046, "ampersand");
-        add(0345, "aring");
-        add(0136, "asciicircum");
-        add(0176, "asciitilde");
-        add(052, "asterisk");
-        add(0100, "at");
-        add(0343, "atilde");
-        add(0142, "b");
-        add(0134, "backslash");
-        add(0174, "bar");
-        add(0173, "braceleft");
-        add(0175, "braceright");
-        add(0133, "bracketleft");
-        add(0135, "bracketright");
-        add(0246, "brokenbar");
-        add(0225, "bullet");
-        add(0143, "c");
-        add(0347, "ccedilla");
-        add(0270, "cedilla");
-        add(0242, "cent");
-        add(0210, "circumflex");
-        add(072, "colon");
-        add(054, "comma");
-        add(0251, "copyright");
-        add(0244, "currency");
-        add(0144, "d");
-        add(0206, "dagger");
-        add(0207, "daggerdbl");
-        add(0260, "degree");
-        add(0250, "dieresis");
-        add(0367, "divide");
-        add(044, "dollar");
-        add(0145, "e");
-        add(0351, "eacute");
-        add(0352, "ecircumflex");
-        add(0353, "edieresis");
-        add(0350, "egrave");
-        add(070, "eight");
-        add(0205, "ellipsis");
-        add(0227, "emdash");
-        add(0226, "endash");
-        add(075, "equal");
-        add(0360, "eth");
-        add(041, "exclam");
-        add(0241, "exclamdown");
-        add(0146, "f");
-        add(065, "five");
-        add(0203, "florin");
-        add(064, "four");
-        add(0147, "g");
-        add(0337, "germandbls");
-        add(0140, "grave");
-        add(076, "greater");
-        add(0253, "guillemotleft");
-        add(0273, "guillemotright");
-        add(0213, "guilsinglleft");
-        add(0233, "guilsinglright");
-        add(0150, "h");
-        add(055, "hyphen");
-        add(0151, "i");
-        add(0355, "iacute");
-        add(0356, "icircumflex");
-        add(0357, "idieresis");
-        add(0354, "igrave");
-        add(0152, "j");
-        add(0153, "k");
-        add(0154, "l");
-        add(074, "less");
-        add(0254, "logicalnot");
-        add(0155, "m");
-        add(0257, "macron");
-        add(0265, "mu");
-        add(0327, "multiply");
-        add(0156, "n");
-        add(071, "nine");
-        add(0361, "ntilde");
-        add(043, "numbersign");
-        add(0157, "o");
-        add(0363, "oacute");
-        add(0364, "ocircumflex");
-        add(0366, "odieresis");
-        add(0234, "oe");
-        add(0362, "ograve");
-        add(061, "one");
-        add(0275, "onehalf");
-        add(0274, "onequarter");
-        add(0271, "onesuperior");
-        add(0252, "ordfeminine");
-        add(0272, "ordmasculine");
-        add(0370, "oslash");
-        add(0365, "otilde");
-        add(0160, "p");
-        add(0266, "paragraph");
-        add(050, "parenleft");
-        add(051, "parenright");
-        add(045, "percent");
-        add(056, "period");
-        add(0267, "periodcentered");
-        add(0211, "perthousand");
-        add(053, "plus");
-        add(0261, "plusminus");
-        add(0161, "q");
-        add(077, "question");
-        add(0277, "questiondown");
-        add(042, "quotedbl");
-        add(0204, "quotedblbase");
-        add(0223, "quotedblleft");
-        add(0224, "quotedblright");
-        add(0221, "quoteleft");
-        add(0222, "quoteright");
-        add(0202, "quotesinglbase");
-        add(047, "quotesingle");
-        add(0162, "r");
-        add(0256, "registered");
-        add(0163, "s");
-        add(0232, "scaron");
-        add(0247, "section");
-        add(073, "semicolon");
-        add(067, "seven");
-        add(066, "six");
-        add(057, "slash");
-        add(040, "space");
-        add(0243, "sterling");
-        add(0164, "t");
-        add(0376, "thorn");
-        add(063, "three");
-        add(0276, "threequarters");
-        add(0263, "threesuperior");
-        add(0230, "tilde");
-        add(0231, "trademark");
-        add(062, "two");
-        add(0262, "twosuperior");
-        add(0165, "u");
-        add(0372, "uacute");
-        add(0373, "ucircumflex");
-        add(0374, "udieresis");
-        add(0371, "ugrave");
-        add(0137, "underscore");
-        add(0166, "v");
-        add(0167, "w");
-        add(0170, "x");
-        add(0171, "y");
-        add(0375, "yacute");
-        add(0377, "ydieresis");
-        add(0245, "yen");
-        add(0172, "z");
-        add(0236, "zcaron");
-        add(060, "zero");
-        // adding some additional mappings as defined in Appendix D of the pdf spec
-        add(0240, "space");
-        add(0255, "hyphen");
+        for (Object[] encodingEntry : WIN_ANSI_ENCODING_TABLE)
+        {
+            add((Integer) encodingEntry[CHAR_CODE], encodingEntry[CHAR_NAME].toString());
+        }
+
         for (int i = 041; i <= 255; i++)
         {
             if (!codeToName.containsKey(i))