Add and fix pdfkit_compressed.pdf
This commit is contained in:
parent
83860bf281
commit
38e3f32557
30
src/fonts.js
30
src/fonts.js
@ -1881,6 +1881,7 @@ var Font = (function FontClosure() {
|
||||
var unusedUnicode = kCmapGlyphOffset;
|
||||
var glyphNames = properties.glyphNames || [];
|
||||
var encoding = properties.baseEncoding;
|
||||
var differences = properties.differences;
|
||||
if (toFontChar && toFontChar.length > 0) {
|
||||
// checking if cmap is just identity map
|
||||
var isIdentity = true;
|
||||
@ -1945,35 +1946,51 @@ var Font = (function FontClosure() {
|
||||
}
|
||||
}
|
||||
this.useToFontChar = true;
|
||||
} else if (!this.isSymbolicFont &&
|
||||
(this.hasEncoding || properties.glyphNames)) {
|
||||
} else if (!this.isSymbolicFont && (this.hasEncoding ||
|
||||
properties.glyphNames || differences.length > 0)) {
|
||||
// Re-encode cmap encoding to unicode, based on the 'post' table data
|
||||
// or base encoding
|
||||
// diffrence array or base encoding
|
||||
var reverseMap = [];
|
||||
for (var i = 0, ii = glyphs.length; i < ii; i++)
|
||||
reverseMap[glyphs[i].unicode] = i;
|
||||
|
||||
for (var i = 0, ii = glyphs.length; i < ii; i++) {
|
||||
var code = glyphs[i].unicode;
|
||||
var changeCode = false;
|
||||
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) {
|
||||
var unicode = GlyphsUnicode[glyphName];
|
||||
if (!unicode || reverseMap[unicode] === i)
|
||||
continue; // unknown glyph name or in its own place
|
||||
|
||||
var destination = reverseMap[unicode];
|
||||
if (typeof destination === 'number' && destination > i)
|
||||
continue;
|
||||
|
||||
var j = i;
|
||||
// Flipping unicodes while next destination unicode has assigned
|
||||
// glyph and future glyph can be assigned to unicode.
|
||||
while (typeof destination === 'number') {
|
||||
glyphs[j].unicode = unicode;
|
||||
reverseMap[unicode] = j;
|
||||
if (changeCode) {
|
||||
toFontChar[code] = unicode;
|
||||
changeCode = false;
|
||||
}
|
||||
|
||||
code = glyphs[destination].unicode;
|
||||
gid = ids[destination];
|
||||
glyphName = glyphNames[gid] || encoding[code];
|
||||
glyphName = glyphNames[gid];
|
||||
if (!glyphName) {
|
||||
glyphName = differences[code] || encoding[code];
|
||||
changeCode = true;
|
||||
}
|
||||
|
||||
unicode = GlyphsUnicode[glyphName];
|
||||
if (!unicode || reverseMap[unicode] === j) {
|
||||
@ -1994,7 +2011,10 @@ var Font = (function FontClosure() {
|
||||
|
||||
glyphs[j].unicode = unicode;
|
||||
reverseMap[unicode] = j;
|
||||
if (changeCode)
|
||||
toFontChar[code] = unicode;
|
||||
}
|
||||
this.useToFontChar = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -19,6 +19,7 @@
|
||||
!issue840.pdf
|
||||
!scan-bad.pdf
|
||||
!freeculture.pdf
|
||||
!pdfkit_compressed.pdf
|
||||
!issue918.pdf
|
||||
!issue1249.pdf
|
||||
!smaskdim.pdf
|
||||
|
BIN
test/pdfs/pdfkit_compressed.pdf
Normal file
BIN
test/pdfs/pdfkit_compressed.pdf
Normal file
Binary file not shown.
@ -466,6 +466,12 @@
|
||||
"link": true,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "pdfkit_compressed",
|
||||
"file": "pdfs/pdfkit_compressed.pdf",
|
||||
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue925",
|
||||
"file": "pdfs/issue925.pdf",
|
||||
"md5": "f58fe943090aff89dcc8e771bc0db4c2",
|
||||
|
Loading…
Reference in New Issue
Block a user