Add and fix pdfkit_compressed.pdf

This commit is contained in:
notmasteryet 2012-03-01 21:23:36 -06:00
parent 83860bf281
commit 38e3f32557
4 changed files with 32 additions and 5 deletions

View File

@ -1881,6 +1881,7 @@ var Font = (function FontClosure() {
var unusedUnicode = kCmapGlyphOffset; var unusedUnicode = kCmapGlyphOffset;
var glyphNames = properties.glyphNames || []; var glyphNames = properties.glyphNames || [];
var encoding = properties.baseEncoding; var encoding = properties.baseEncoding;
var differences = properties.differences;
if (toFontChar && toFontChar.length > 0) { if (toFontChar && toFontChar.length > 0) {
// checking if cmap is just identity map // checking if cmap is just identity map
var isIdentity = true; var isIdentity = true;
@ -1945,35 +1946,51 @@ var Font = (function FontClosure() {
} }
} }
this.useToFontChar = true; this.useToFontChar = true;
} else if (!this.isSymbolicFont && } else if (!this.isSymbolicFont && (this.hasEncoding ||
(this.hasEncoding || properties.glyphNames)) { properties.glyphNames || differences.length > 0)) {
// Re-encode cmap encoding to unicode, based on the 'post' table data // Re-encode cmap encoding to unicode, based on the 'post' table data
// or base encoding // diffrence array or base encoding
var reverseMap = []; var reverseMap = [];
for (var i = 0, ii = glyphs.length; i < ii; i++) for (var i = 0, ii = glyphs.length; i < ii; i++)
reverseMap[glyphs[i].unicode] = i; reverseMap[glyphs[i].unicode] = i;
for (var i = 0, ii = glyphs.length; i < ii; i++) { for (var i = 0, ii = glyphs.length; i < ii; i++) {
var code = glyphs[i].unicode; var code = glyphs[i].unicode;
var changeCode = false;
var gid = ids[i]; var gid = ids[i];
var glyphName = glyphNames[gid] || encoding[code]; var glyphName = glyphNames[gid];
if (!glyphName) {
glyphName = differences[code] || encoding[code];
changeCode = true;
}
if (glyphName in GlyphsUnicode) { if (glyphName in GlyphsUnicode) {
var unicode = GlyphsUnicode[glyphName]; var unicode = GlyphsUnicode[glyphName];
if (!unicode || reverseMap[unicode] === i) if (!unicode || reverseMap[unicode] === i)
continue; // unknown glyph name or in its own place continue; // unknown glyph name or in its own place
var destination = reverseMap[unicode]; var destination = reverseMap[unicode];
if (typeof destination === 'number' && destination > i)
continue;
var j = i; var j = i;
// Flipping unicodes while next destination unicode has assigned // Flipping unicodes while next destination unicode has assigned
// glyph and future glyph can be assigned to unicode. // glyph and future glyph can be assigned to unicode.
while (typeof destination === 'number') { while (typeof destination === 'number') {
glyphs[j].unicode = unicode; glyphs[j].unicode = unicode;
reverseMap[unicode] = j; reverseMap[unicode] = j;
if (changeCode) {
toFontChar[code] = unicode;
changeCode = false;
}
code = glyphs[destination].unicode; code = glyphs[destination].unicode;
gid = ids[destination]; gid = ids[destination];
glyphName = glyphNames[gid] || encoding[code]; glyphName = glyphNames[gid];
if (!glyphName) {
glyphName = differences[code] || encoding[code];
changeCode = true;
}
unicode = GlyphsUnicode[glyphName]; unicode = GlyphsUnicode[glyphName];
if (!unicode || reverseMap[unicode] === j) { if (!unicode || reverseMap[unicode] === j) {
@ -1994,7 +2011,10 @@ var Font = (function FontClosure() {
glyphs[j].unicode = unicode; glyphs[j].unicode = unicode;
reverseMap[unicode] = j; reverseMap[unicode] = j;
if (changeCode)
toFontChar[code] = unicode;
} }
this.useToFontChar = true;
} }
} }

View File

@ -19,6 +19,7 @@
!issue840.pdf !issue840.pdf
!scan-bad.pdf !scan-bad.pdf
!freeculture.pdf !freeculture.pdf
!pdfkit_compressed.pdf
!issue918.pdf !issue918.pdf
!issue1249.pdf !issue1249.pdf
!smaskdim.pdf !smaskdim.pdf

Binary file not shown.

View File

@ -466,6 +466,12 @@
"link": true, "link": true,
"type": "eq" "type": "eq"
}, },
{ "id": "pdfkit_compressed",
"file": "pdfs/pdfkit_compressed.pdf",
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
"rounds": 1,
"type": "eq"
},
{ "id": "issue925", { "id": "issue925",
"file": "pdfs/issue925.pdf", "file": "pdfs/issue925.pdf",
"md5": "f58fe943090aff89dcc8e771bc0db4c2", "md5": "f58fe943090aff89dcc8e771bc0db4c2",