]> git.parisson.com Git - pdf.js.git/commitdiff
Moving all symbolic font glyphs into 0xF000 - 0xF0FF range
authornotmasteryet <async.processingjs@yahoo.com>
Mon, 20 Feb 2012 23:19:12 +0000 (17:19 -0600)
committernotmasteryet <async.processingjs@yahoo.com>
Mon, 20 Feb 2012 23:19:12 +0000 (17:19 -0600)
src/fonts.js
test/pdfs/issue1257.pdf.link [new file with mode: 0644]
test/test_manifest.json

index dc57417de0cab3b6cddd5c17812625a3d52815b2..632d137b21ec8b85255d7ac97d214f33cb485820 100644 (file)
@@ -11,6 +11,7 @@ var kMaxWaitForFontFace = 1000;
 // Unicode Private Use Area
 var kCmapGlyphOffset = 0xE000;
 var kSizeOfGlyphArea = 0x1900;
+var kSymbolicFontGlyphOffset = 0xF000;
 
 // PDF Glyph Space Units are one Thousandth of a TextSpace Unit
 // except for Type 3 fonts
@@ -1888,7 +1889,7 @@ var Font = (function FontClosure() {
             }
           }
           // if it is, replacing with meaningful toUnicode values
-          if (isIdentity) {
+          if (isIdentity && !this.isSymbolicFont) {
             var usedUnicodes = [], unassignedUnicodeItems = [];
             for (var i = 0, ii = glyphs.length; i < ii; i++) {
               var unicode = toUnicode[i + 1];
@@ -1940,11 +1941,15 @@ var Font = (function FontClosure() {
           }
         }
 
-        // If font is symbolic and cmap (3,0) present, the characters can be
-        // located in 0xF000 - 0xF0FF range. Using the first glyph code
-        // to detect the base glyphs offset.
-        this.symbolicGlyphsOffset = this.isSymbolicFont && !hasShortCmap ?
-          (glyphs[0].unicode & 0xFF00) : 0;
+        // Moving all symbolic font glyphs into 0xF000 - 0xF0FF range.
+        this.symbolicGlyphsOffset = 0;
+        if (this.isSymbolicFont) {
+          for (var i = 0, ii = glyphs.length; i < ii; i++) {
+            var code = glyphs[i].unicode;
+            glyphs[i].unicode = kSymbolicFontGlyphOffset | (code & 0xFF);
+          }
+          this.symbolicGlyphsOffset = kSymbolicFontGlyphOffset;
+        }
 
         // remove glyph references outside range of avaialable glyphs
         for (var i = 0, ii = ids.length; i < ii; i++) {
diff --git a/test/pdfs/issue1257.pdf.link b/test/pdfs/issue1257.pdf.link
new file mode 100644 (file)
index 0000000..5a8bdd1
--- /dev/null
@@ -0,0 +1 @@
+http://hse-econ.fi/tervio/MediocritiesAndSuperstars.pdf
index e19aeb3a3fddf2e7af513f61e0a7534c38ad9119..9297bf4d83da08772e64f6980039241f57ff22bf 100644 (file)
       "pageLimit": 2,
       "link": true,
       "type": "eq"
+    },
+    {  "id": "issue1257",
+      "file": "pdfs/issue1257.pdf",
+      "md5": "9111533826bc21ed774e8e01603a2f54",
+      "rounds": 1,
+      "pageLimit": 2,
+      "link": true,
+      "type": "eq"
     }
 ]